2016-08-11 27 views
1

Ich bin Bild aus lokalen Gerätegalerie mit Bildauswahl auswählen, aber das Bild wird nicht gespeichert und in der Tabellenansicht Zelle angezeigt, sobald die Galerie mit Core-Daten mit xcode abgewiesen wird 7.3, ios9 und schnelle 2,2So aktualisieren Sie das Bild in der Tabellenansicht Zelle mit Core-Daten

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)") 
      } 

      } 


    } 

Antwort

0

Da Sie nicht Probleme erwähnen die Felder Name und Beschreibung oder der Erstellung des Speicherobjekt, ich gehe davon aus, dass alles funktioniert und du bist OK mit dem Coredata Prozess .

Eine zu überprüfende Sache ist die Ganzzahl 1 im JPEG-Umwandlungsaufruf. Das sollte ein Float sein, also probiere 1,0 im Call aus, obwohl ich überrascht bin, dass XCode mich nicht erwischt hat. Nicht sicher, ob das Ihr Problem verursachen könnte. Das andere potentielle Problem, das Sie mit der Konvertierung haben können, ist, dass der UIImageJPEGRepresentation-Aufruf aus anderen Gründen fehlschlagen kann und einen Nullwert zurückgibt (zB geschah dies, als ich einen CImage direkt in einen UIImage konvertierte) , aber es hat funktioniert, wenn ich es über eine CGImage gemacht habe - go figure). In Anbetracht all dessen sollten Sie das Ergebnis des Anrufs überprüfen. Ich benutze eine Schutzerklärung und benutzerdefinierte Logger wie folgt:

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

Wenn das andernfalls werden Sie auf den Bildern, um zu überprüfen müssen Sie aus dem Picker bekommen.

Wenn Sie Probleme mit der Datenbankseite der Dinge haben, haben Sie die TableView-Delegate-Funktionen in Ihrem View-Controller (ControllerWillChangeContent, etc.) enthalten. Sie benötigen diese, damit die configureCell-Methode aufgerufen wird, wenn sich der Datensatz mit dem Bild ändert.

Das sind die Dinge, mit denen ich anfangen würde.

+0

Ich habe versehentlich verschiedenen Bildern denselben Namen gegeben, habe es mit logError behoben. –

+0

Froh, es hat geklappt –

Verwandte Themen