将jl中的url添加到CoreData的问题

时间:2017-12-21 07:39:41

标签: ios swift core-data

我有像这样的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的最后一个元素,而不是所有的图片网址。

希望有人能提出正确的方法......

0 个答案:

没有答案