2016-04-01 23 views
2

Ich benutze Swift und ich arbeite an einer App, die eine "Kamera" -Taste hat. Wenn ich auf diesen Knopf klicke, öffnet sich die iPhone Kamera. Aber wenn ich zu "Use Photo" gehe, funktioniert die App nicht.schnelle Core-Daten: Bilder von der Kamera speichern

Wie kann ich Shot-Bilder in einem Array speichern, so dass sie in einer UITableView aufgeführt sind?

func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { 
    if editingStyle == UITableViewCellEditingStyle.Delete{ 
     imageArray.removeAtIndex(indexPath.row) 
     self.mytableview.reloadData() 
    } 
} 

Antwort

2

Sie setzen das Bild auf die imagePicker-Instanz, die nicht ordnungsgemäß funktioniert. Stattdessen möchten Sie zu:

  1. Serialize das Bild in ein NSData Objekt
  2. Speichern Sie die NSData Objekt in der Datenbank
  3. jedes Bild Lesen wieder aus der Datenbank in den Daten des Tableview Quelle Um die NSData zu erhalten Objekt, könnten Sie das Bild in PNG konvertieren. Sie sollten so etwas in Ihrer didFinishPickingImage Delegatfunktion setzen:

    lassen imgData = UIImagePNGRepresentation (Bild) item.setValue (imgData, forKey: „Bild“) Der obige Code übernimmt Ihr Datenmodell eine Spalte mit Datentyp hat und Name image. Es wird dann das konvertierte Bild in die Datenbank einfügen.

nun in Ihrem tableViewDelegate des cellAtRowForIndexPath, lesen die Daten jedes Bild aus der Datenbank und in Zellen setzen, so etwas wie dies mit: cell.imageView.image = UIImage (data: imgData)

jedoch Ich würde diesen Ansatz zum Speichern von Fotos mit voller Auflösung nicht empfehlen. Core Data ist für relativ kleine Werte ausgelegt, nicht für Bilder mit voller Auflösung. Es ist besser, die Bilder mit einer standardisierten Namenskonvention im Dateisystem (dem Dokumentordner der App) zu speichern.

Verwandte Themen