我正在尝试使用[[String:AnyObject]]创建一个字典数组。我已经使用SwiftyJSON将JSON转换为JSON对象,并且能够遍历每个键和值。以下代码不会为每个业务创建单独的业务,而是针对业务中的每个密钥和价值创建单独的业务。目前,JSON具有id,name,latitude和longitude的部分,我希望字典中的每个值都适用于数组中的每个业务。
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"]
答案 0 :(得分:0)
基本上,您只需要将每个业务的键值对添加到字典中,然后将该字典添加到阵列中。
这样的事情:
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%测试代码,但这是一般的想法。
答案 1 :(得分:0)
在Playground中运行。
//: 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
}