我正在使用Alamofire获取一些JSON数据而不是将所有内容都硬编码,我想知道如何简单地将所有内容都包含在数组中。
目前,这是JSON文件:
{"One":"Item1","Two":"Item2","Three":"Item3","Four":"Item4","Five":"Item5"}
我的快捷代码:
var pickerData: [String] = [String]() //Array of content.
override func viewDidLoad() {
super.viewDidLoad()
Alamofire.request(.GET, "https://example.com/file.json").responseJSON{ (response) -> Void in
if let JSON = response.result.value{
let One = JSON["One"] as! String
let Two = JSON["Two"] as! String
let Three = JSON["Three"] as! String
let Four = JSON["Four"] as! String
let Five = JSON["Five"] as! String
self.mypickerview.delegate = self
self.mypickerview.dataSource = self
self.pickerData = [One, Two, Three, Four, Five]
...
我怎么能不让他们硬编码,这样我就可以拥有这样的文件,它仍然可以工作并包含JSON中的所有内容,即使我将来添加更多内容:
{"Item1","Item2","Item3","Item4","Item5","Item6"}
答案 0 :(得分:1)
Aaron是对的,你的JSON应该使用数组来保存项目值。
但是,如果你坚持使用这种格式,你可以像pickerData
那样得到这些值:
if let JSON = response.result.value as? [String:AnyObject] {
let result = JSON.values.flatMap({ String($0) })
self.pickerData.appendContentsOf(result)
self.pickerData.sortInPlace()
}
pickerData
现在是:
[“Item1”,“Item2”,“Item3”,“Item4”,“Item5”]
并且项目将在选择器数组中排序,即使您稍后添加新项目。