ios swift 2如何用json数据填充uipickerview [重复]

Posted

技术标签:

【中文标题】ios swift 2如何用json数据填充uipickerview [重复]【英文标题】:ios swift 2 how to populate uipickerview with json data [duplicate] 【发布时间】:2017-07-03 09:10:59 【问题描述】:

我是 ios 开发和使用 swift 语言的新手。在我的应用程序中,我使用 Alamofire 2 网络库来调用 rest api。现在我想动态填充 uipickerview,我正在调用这个 Web 服务并以 json 数组的形式获取响应

[
 
    duration = "2017 - 2018";
    year = 2017;
 
 
    duration = "2016 - 2017";
    year = 2016;
 
 
    duration = "2015 - 2016";
    year = 2015;
 
]

现在我想用“持续时间”数据填充 uipickerview,我经历了各种示例,但无法理解如何执行此操作。任何帮助表示赞赏。

Swift 代码:

 func getYear()

    url = baseUrl + "/foo/bar"
    Alamofire.request(.GET, url , parameters: ["foo": foo,"bar":bar])
        .responseJSON()
    (_,_,result)
            in
            print("get year list result ",result)

            switch result 
            case .Success(let JSON):
                print("Success with JSON: \(JSON)")
                let jsonData = JSON as! NSDictionary
                let duration = jsonData.objectForKey("duration")
                print("duration ",duration)

            case .Failure(let data, let error):
                print("Request failed with error: \(error)")

                if let data = data 
                    print("Response data: \(NSString(data: data, 
                    encoding: NSUTF8StringEncoding)!)")
                
            

    


控制台消息

get year list result  SUCCESS
Success with JSON: 
(
        
        duration = "2017 - 2018";
        year = 2017;
    
)

Getting this error
Could not cast value of type '__NSCFArray' (0x394c92d0) to 'NSDictionary' (0x394c93c0).

谢谢

【问题讨论】:

请显示您的尝试和错误。 解析 JSON 数据以将所有持续时间值存储在一个数组中,并在 UIPickerViewDelegate 函数的实现中使用该数组 是的@DSDharma,这是一个重复的问题,正如我所说,我是 iOS 开发的新手,并且通过了您建议的示例,但无法获取 Json Array 数据。 【参考方案1】:

将数据解析成数组:-

yourModel : NSObject 
var duration: String?
var year : String?

假设:yourArray = [yourModel]()

func numberOfComponents(in pickerView: UIPickerView) -> Int 
      return 1


func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int 
     return yourArray.count


func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? 
     if yourArray.count > 0 
        return yourArray[row].duration
    
 

【讨论】:

以上是关于ios swift 2如何用json数据填充uipickerview [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何用 ASIHttpRequest JSON 数据填充 UITableView?

IOS swift如何使用返回的Json数据填充我的TableView

如何用字典中的分组结构中的数据填充UITableView?

如何用iOS自带摄像头进行拍摄获取视频流以及OpenCV图像处理实时显示

如何用图像作为背景填充 iOS 堆栈视图(UIStackView)?

如何用另一个observable填充observable并返回observable