gpt4 book ai didi

ios - 使用 swift 2.1 迭代一个 JSON 命名的字典数组

转载 作者:行者123 更新时间:2023-11-29 01:21:55 26 4
gpt4 key购买 nike

我正在拉一个 JSON 字典数组,试图将它们添加到我创建的类中,并将它们用于 UITableView . JSON 看起来像这样:

   {  
"inventory":[
{
"item":"item 1",
"description":"item 1 description",
"quantityOnHand":"42",
"supplier_id":"1",
"supplierName":"Supplier 1"
},
{
"item":"item 2",
"description":"item 2 description",
"quantityOnHand":"1001",
"supplier_id":"1",
"supplierName":"Supplier 1"
} ...

等等...

我正在我的viewDidLoad()中捕获所有这些并尝试将每个字典添加到一个类(称为 Inventory )以便稍后使用。这是我序列化 JSON 的位置:

override func viewDidLoad() {
super.viewDidLoad()

let urlString = "my url to json data";
let session = NSURLSession.sharedSession();
let url = NSURL(string: urlString)!;

session.dataTaskWithURL(url) { (data: NSData?, response:NSURLResponse?, error: NSError?) -> Void in
if let responseData = data {
do {
let json = try NSJSONSerialization.JSONObjectWithData(responseData, options: NSJSONReadingOptions.AllowFragments)

print(json) //this prints out the above formatted json



if let dict = json as? Dictionary<String, AnyObject> {
print(dict["inventory"]![0]!["description"]);
print(dict["inventory"]![0]!["item"]);
print(dict["inventory"]![0]!["quantityOnHand"]);
}
} catch {
print("Could not serialize");
}
}
}.resume()
}

我可以使用类似 print(dict["inventory"]![0]!["description"]); 打印出每个值但这似乎效率低下。

我需要一个 for 循环来计算字典的数量吗?或者 for (key, value)环形?事实上,它是一个名为 inventory 的数组中的一堆字典。真的让我很失望。如果是 JSON 在单个字典中返回键:值对,我想我可以自己解决。在输入 json["inventory"] 后,我有点不知所措。变成一个变量。

最佳答案

首先将JSON序列化为有意义的东西,
在这种情况下 Dictionary<String, AnyObject>

let json = try NSJSONSerialization.JSONObjectWithData(responseData, options: NSJSONReadingOptions.AllowFragments) as! Dictionary<String, AnyObject>

然后检索字典数组,JSON 字符串显示它只包含 String类型。

let inventoryArray = dict["inventory"] as! [Dictionary<String, String>]

如果inventory是可选的,使用可选绑定(bind)

if let inventoryArray = dict["inventory"] as? [Dictionary<String, String>] { }

现在您可以通过简单的循环获取数组中的项目,不需要任何类型转换。

for anItem in inventoryArray {
print("description:", anItem["description"])
print("item: ", anItem["item"])
print("quantityOnHand: ", anItem["quantityOnHand"])
}

关于ios - 使用 swift 2.1 迭代一个 JSON 命名的字典数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34497135/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com