这是我的json
回复......
{
"success": 1,
"TotalRevenue": “123.12 K",
"Productdata": [
{
"product_id": "5",
"product_name": “abc”
"product_images": [
{
"id": "938",
"image_url": "http://myApp.direct.com/public165_1_image_15",
"is_default": "1"
}
]
}
这就是我解析这些数据的方法......
if let projectData = result["Productdata"] as? [[String:Any]] {
let images = projectData.flatMap({ $0["product_images"] as? [[String: Any]] }).flatMap({ $0 })
let productName = projectData.flatMap({ $0["product_name"] as? String })
self.arrayOfNames = productName
self.arrayOfId = imageIds
}
我已经提取了名称并将它们分配给上面的数组(id和imageurl也被提取出来了。但是现在我们只考虑名称提取。)
然后我从包含所有名称的数组中取出每个名字,如此......
for names in self.arrayOfNames {
DispatchQueue.global(qos: .background).async
{
self.theNameArray.append(names)
DispatchQueue.main.async {
self.collectionView.reloadData()
}
}
}
最后,为了能在colletionview中的每张图片下获得相应的名称,我这样做......
cell.recipeImageView.image = self.arrayOfURLImages[indexPath.row]
cell.nameLabel.text = self.arrayOfNames[indexPath.row]
在上面两行代码中,第一行显示了图像。但我的问题是名称没有正确显示,即图像的相应名称没有显示...而是任何随机名称都分配给任何图像。如何在正确的图像下获得正确的名称。
我确实通过了处理类似问题的帖子。但是我无法找到解决问题的方法。我知道这很简单......只处理键值对,但我和#39;我无法确切知道如何......
提前致谢...:)
答案 0 :(得分:0)
我试图制作假人确保它是正确的,如果您发现任何问题,请告诉我
<强> ProductData 强>
var productData : [[String : Any]] = [["id" : "1",
"name" : "a",
"images" : [[
"id" : "11",
"url" : "url_a"]
]
],
["id" : "2",
"name" : "b",
"images" : [[
"id" : "22",
"url" : "url_b"]
]
]
]
此数组的输出如下
正在解析
let images = productData.flatMap({ $0["images"] as? [[String: Any]] }).flatMap({ $0 })
let imageIds = images.flatMap({ $0["id"] as? String })
let productName = productData.flatMap({ $0["name"] as? String })
let productURL = images.flatMap({ $0["url"] as? String })
print(productURL)// output 1
print(productName)//output 2
解析输出
网址列表和名称列表的顺序相同。检查。