我正在使用 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"}
最佳答案
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"]
即使您稍后添加新项目,项目也会在选择器数组中排序。
关于json - 获取JSON中的所有项目并将它们放入数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39360331/