在tableview中添加的图片显示不正确

时间:2018-01-19 07:08:31

标签: ios swift core-data

我正在添加一些来自图库的图片并填写一些细节,如此... enter image description here

现在,通过单击提交按钮,3个图像中的第一个及其数据显示在另一个表视图中...

enter image description here

现在我再次访问我的ADD PRODUCTS屏幕,再添加2张图片..

enter image description here

但现在当我点击提交按钮时,tableview中显示的图像应该是2个图像中的第1个图像,即瀑布的图像。但显示的图像是......

enter image description here

从图库中选择图片时,在didFinishPickingMediaWithInfo方法中,我将图片转换为NSData并将其分配给NSData类型的数组,如此...

      let data = UIImagePNGRepresentation(image) as NSData?
      self.appDelegate.mydata1 = data!
      self.appDelegate.mydataArray.append(self.appDelegate.mydata1)

点击提交按钮我将self.appDelegate.mydataArray保存到CoreData就像这样..

         newProdObj.setValue(self.appDelegate.mydataArray, forKey: 
         "imageDataArray") //In the .xcdatamodel, imageDataArray is an attribute of type Transformable and custom class type Array<NSData>
        do {

            try managedContext.save()
            self.newProductDetails.append(newProdObj as! NewProduct)
          } catch let error as NSError { }

在tableviewcontroller视图中,我像这样提取这些数据..

newProdDetails = try managedContext.fetch(fetchRequest as! NSFetchRequest<NSFetchRequestResult>) as! [NewProduct]

            for result in newProdDetails {
     if let imageData = result.value(forKey: "imageDataArray") as? 
                  Array<NSData> {
                            }
                   tableview.reloadData()

        }

cellForRowAt这是我正在做的......

let dfg = newProdDetails[indexPath.row]

cell.nameLabel.text = dfg.name
cell.qtyLabel.text = dfg.quantity
cell.rateLabel.text = dfg.mrp

let arrayOfAllImageData = dfg.imageDataArray

if let image = UIImage(data: arrayOfAllImageData![0] as Data) {
            imageArray.append(image)
            cell.productImageView.image = imageArray[indexPath.row]
        }

我做错了什么..?还是有更好的方法......?

1 个答案:

答案 0 :(得分:0)

BTW,如果arrayOfAllImageData![indexPath.row]为nil,则不更改cell.productImageView.image

if let image = UIImage(data: arrayOfAllImageData![indexPath.row] as Data) {
    cell.productImageView.image = image 
}

所以在这里你必须添加else块