2016-04-04 7 views
2

Ich erstelle eine Core Data-Anwendung in Swift. Es ist eine Tagebuchähnliche App, in der Benutzer einen Eintrag mit einem Titelfeld und einer Bildauswahl eingeben können. Momentan habe ich nur 1 image Attribut mit dem Typ Binary Data. Ich möchte, dass der Benutzer mehr als ein Bild pro Eintrag auswählen kann. Wie kann ich mehrere Bilder mit einem Eintrag verknüpfen?Mehrere Bilder in einem einzigen Eintrag- Kerndaten in Swift

+0

Speichern Bild in Coredata als binäre keine gute Idee ist. Sie sollten versuchen, es auf der Festplatte zu speichern und den Dateipfad als Attribut einzufügen. auch um Ihre Hauptfrage zu beantworten. Sie sollten einen anderen Eintrag namens Bilder haben und Sie müssen 1-n-Beziehung zwischen Ihrem Tagebucheintrag und Bildeinträgen setzen. – cekisakurek

+0

Haben Sie schon eine Lösung gefunden? –

+0

@SonicMaster Zu dieser Zeit ging ich mit 3 Bilddatenfeldern in der gleichen Kerndateneinheit. Aber später lernte ich, wie man eine andere Entität für Bilder verwendet und eine Beziehung mit der Haupteinheit herstellt. Ich habe eine andere App mit dieser Beziehungslogik erstellt. –

Antwort

0
  1. Erstellen Sie eine zusätzliche Entität, zum Beispiel mit dem Namen "Bilder".
  2. Schließen Sie sie durch Editor-Schnittstelle (in beide Richtungen) Eintrag <> Bilder
  3. die NSManagedClasses erstellen (oder sie aktualisieren)

Jetzt können Sie Bilder für jeden Eintrag gesetzt ist. Mit:

let entry = NSEntityDescription.insertNewObjectForEntityForName("entry", inManagedObjectContext: context) as! YourModel (Entry) 

//When you now save an image, just do: 

let image = NSEntityDescription.insertNewObjectForEntityForName("myImage", inManagedObjectContext: context) as! MyImage 
entry.myImage = image // this will "connect" your image with your main NSManagedObject 

Klasse Beispiel:

class Entry: NSManagedObject { 
    @NSManaged var myImage: [MyImage]? 
} 
+0

Danke, ich werde das versuchen. Aber was ist [MyImage]? Sollte es nicht [NSData] sein? –

+0

MyImage ist ein NSManagedObject. Es ist also 1 Zeile in einer SQL-Tabelle (einfach gesprochen) - eine Zeile könnte mehrere Spalten enthalten (das sind Objekteigenschaften) -> Wenn Sie nur 1 Feld (NSData) benötigen, erstellen Sie ein NSManagedObject mit 1 Eigenschaft namens "Daten" (für Beispiel) – derdida

+0

Vielen Dank. Ich werde es morgen wissen lassen, wenn es funktioniert. –

Verwandte Themen