2016-08-11 60 views
1

我使用圖像選擇器從本地設備庫中選取圖像,但是一旦圖庫被使用xcode核心數據解散,圖像就不會保存並顯示在表格視圖單元格中7.3,ios9快捷的2.2如何使用核心數據更新表格視圖單元格中的圖像

if isUpdate == true{ 
      print("object id \(self.store?.objectID)") 
      self.store?.sName = name.text 
      self.store?.sDescription = desc.text 
      //save.setTitle("my text here", forState: .Normal) 
      let img = UIImage(named: "image.jpeg") 
      let imgData = UIImageJPEGRepresentation(img!,1) 
      self.store?.sImage = imgData 
      do { 
       try appdelegate.managedObjectContext.save() 
       self.navigationController?.popViewControllerAnimated(true) 
      } catch let error as NSError { 
       print("Could not save \(error), \(error.userInfo)") 
      } 

     }else{ 
      //get the description of the entity 
      let storeDescription = NSEntityDescription.entityForName("Store",inManagedObjectContext: appdelegate.managedObjectContext) 

      //we create managed object to be inserted to core data 
      let store = EventsandnotesStore(entity : storeDescription!,insertIntoManagedObjectContext:appdelegate.managedObjectContext) 
      store.sName = name.text 
      store.sDescription = desc.text 
      // 
      let img = UIImage(named: "image.jpeg") 

      let imgData = UIImageJPEGRepresentation(img!,1) 

      store.sImage = imgData 
      do { 
       try appdelegate.managedObjectContext.save() 
       self.navigationController?.popViewControllerAnimated(true) 
      } catch let error as NSError { 
       print("Could not save \(error), \(error.userInfo)") 
      } 

      } 


    } 

回答

0

既然你沒有提到的名稱和描述字段或存儲對象的創建問題,我假設所有的工作,你與CoreData過程OK 。

要檢查的一件事是JPEG轉換調用中的整數值1。這應該是一個Float,所以在通話中嘗試1.0,但我很驚訝,沒有被XCode抓住。不確定這是否會導致您的問題。

您碰到的轉換可能存在的另一個潛在問題是,UIImageJPEGRepresentation調用可能因其他原因失敗,返回一個零值(例如,當我直接將CIImage轉換爲UIImage ,但它的工作,如果我通過CGImage - 去圖)。鑑於這一切,你應該檢查通話的結果。我使用保護聲明和自定義記錄如下:

guard let thumbnailData = UIImageJPEGRepresentation(thumbnailUI, Set.shared.jpegQuality) else 
    { 
     logError(#file, line: #line, column: #column, function: #function, description: "JPG Conversion Error - thumbnail") 
     return nil 
    } 

如果一個本沒有你需要檢查你從選擇器獲取的圖像。

如果您在數據庫方面遇到問題,是否將TableView委託函數包含在您的視圖控制器(controllerWillChangeContent等)中。您將需要這些,以便在圖像記錄更改時調用configureCell方法。

這些是我開始的事情。

+0

我不小心給了不同的圖像相同的名字,通過使用logError來修復它。 –

+0

很高興解決 –

相關問題