我有像这样的json响应......
{
"rating_count": 0,
"product_images": [
{
"id": "973",
"image": "http://myapp.com/public/abc_image",
"is_default": "0"
},
{
"id": "988",
"image": "http://myapp12.com/public/abc_image123",
"is_default": "0"
},
{
"id": "989",
"image": "http://myapp3.com/public/abc_image754674",
"is_default": "1"
}
]
}
解析时,is_Default
值为1的网址如下:
if let defaultImage = images.first(where: {$0["is_default"] == "1"}) {
let productImage = ProductImage(myId: defaultImage["id"]!,
url: URL(string: defaultImage["image"]!)!, isDefault: true)
self.urlOfImage = "\(productImage.url)"
}
要存储网址,self.urlOfImage
设置为CoreData,就像这样......
category.setValue(self.urlOfImage, forKeyPath: "imgUrl")
do{
try managedContext.save()
self.appDelegate.allProducts.append(category as! Products)
} catch let error as NSError { }
我在viewwillAppear
就像这样......
在完成此操作时:
let fetchRequest = .....
do{
self.appDelegate.allProducts = try managedContext.fetch(fetchRequest as! NSFetchRequest<NSFetchRequestResult>) as! [Products]
for result in self.appDelegate.allProducts{
if let theData = result.value(forKey: "imgUrl") as? String {
arrayOfImageUrls.append(theData)//this array has all images with is_Default 1
}
}
}
现在arrayOfImageUrls
正确拥有所有图像。但是,在存储is_Default
为1的网址的同时,我还想在CoreData中存储0&amp; 0的is_Default
的网址。 1。
为此,我在CoreData中设置了另外一个变量,如此...
category.setValue(self.urlOfClickedImage, forKeyPath: "imgUrlOnClick")
并尝试在viewWillAppear
中像这样获取它...
if let theClickedData = result.value(forKey: "imgUrlOnClick") as? String {
arrayOfClickedImageUrls.append(theClickedData)
}
但这不起作用,因为arrayOfClickedImageUrls
只有product_images
响应的json
的最后一个元素,而不是所有的图片网址。
希望有人能提出正确的方法......