2012-07-12 23 views
8

Ich arbeite an einer Anwendung, wo der Benutzer mit dem Finger auf dem Bildschirm zeichnen kann. Ich benutze dafür UIBezierPath. Ich muss diese Daten beibehalten, die ein NSArray ist, das mehrere BezierPath-Objekte enthält. Was ist der beste Weg, dies zu tun? In Coredata speichern, mit NSData in einer Datei speichern? Herzlichen Dank.UIBezierPath Persistenz mit Kerndaten

Antwort

12

Erwarten Sie, mehrere Objekte speichern zu müssen? Müssen Sie sie basierend auf einem Filter oder einer Bestellung abrufen können? Ich empfehle die Verwendung von Core Data, um eine ordentliche Menge an Arbeit beim Packen/Entpacken der Daten zu sparen. Es gibt keinen Grund, es in einer Datei zu speichern.

edit:

Wie die andere Antwort sagte, Sie archivieren es nur NSData. Die UIBezierPath Klasse hält sich an das NSCoding Protokoll, so dass Sie etwas tun kann, es zu archivieren:

NSData *bezierData = [NSKeyedArchiver archivedDataWithRootObject:bezierPath]; 

können Sie beharren, dass NSData Objekt in Core Data.

UIBezierPath *bezierPath = [NSKeyedUnarchiver unarchiveObjectWithData:bezierData]; 
+0

Wie würden Sie einen UIBesierPath in Coredata bestehen bleiben? –

+0

Aktualisierung meiner Antwort. – Dima

1

Archiv der UIBezierPath zu NSData, und speichern Sie es als ein Attribut des Typs NSData in Coredata:

das Archiv zu entschlüsseln, haben wir eine bezierData NSData Objekt vorausgesetzt, können Sie so etwas wie tun. Sie können eine einfachere API verwenden, wenn Sie sie zu einem transformierbaren Attribut machen.

Es ist ziemlich einfach zu tun, besonders für Klassen, die bereits die Archivierung unterstützen.

Weitere Informationen finden Sie in diesem Dokument.

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdNSAttributes.html