我试图使用[String:AnyObject]创建一个字典数组。我使用SwiftyJSON将JSON转换为JSON对象,并能够循环遍历每个键和值。下面的代码将不会为每个企业创建一个单独的业务,而是为每个业务中的每个键和价值创建一个单独的业务。目前,JSON有关于id、name、纬度和经度的部分,我希望在字典中为数组中的每个业务提供这些值。
var businesses = [[String:AnyObject]]()
for business in json["businesses"]!.array! {
for (key,value) in business {
let value1 = value.stringValue
businesses.append([key:value1])
}
}如何调整此代码以为每个业务创建单个业务,而不是为每个键和值在数组中创建单个业务。
目前:
businesses[:] = ["id" = 1, "name" = "asdf",...,"id" = 2, "name" = "asdf2"] 而不是我想要的
businesses[0] = ["id" = 1, "name" = "asdf"]
businesses[1] = ["id" = 2, "name" = "asdf2"]发布于 2016-05-27 00:44:12
基本上,您只需要将每个业务的键、值对添加到字典中,然后将该字典添加到数组中。
就像这样:
var businesses = [[String: AnyObject]]
for business in json["businesses"]!.array! {
var dic = [String: AnyObject]
for (key,value) in business {
let value1 = value.stringValue
dic [key] = value1
}
businesses.append(dic)
}因为您没有提供JSON数据,所以我无法100%地测试代码,但这是一般的想法。
发布于 2016-05-27 01:27:48
在游乐场上运行这个。
//: Playground - noun: a place where people can play
import UIKit
// Simulating JSON
class sim {
let s: String
init(_ s:String) {self.s = s}
var stringValue:String {return s}
}
let simulatingJSONThings = [
["id":sim("3"), "name":sim("Alice"), "lat":sim("123.45"), "lng":sim("567.89")],
["id":sim("4"), "name":sim("Bob"), "lat":sim("123.45"), "lng":sim("567.89")],
["id":sim("5"), "name":sim("Conny"), "lat":sim("123.45"), "lng":sim("567.89")],
]
// #1 Yours
do {
var businesses = [[String:AnyObject]]()
for business in simulatingJSONThings {
for (key,value) in business {
let value1 = value.stringValue
businesses.append([key:value1])
}
}
businesses
}
// #2 Answer
do {
var businesses = [[String:AnyObject]]()
for business in simulatingJSONThings {
var b = [String:String]()
for (key,value) in business {
let value1 = value.stringValue
b[key] = value1
}
businesses.append(b)
}
businesses
}https://stackoverflow.com/questions/37472828
复制相似问题