Ich muss mein Array in Core Data speichern.
let array = [8, 17.7, 18, 21, 0, 0, 34]
Die Werte in diesem Array und die Anzahl der Werte sind variabel.
1. Was deklariere ich in meiner NSManagedObject-Klasse?
class PBOStatistics: NSManagedObject, Equatable {
@NSManaged var date: NSDate
@NSManaged var average: NSNumber
@NSManaged var historicAverage: NSNumber
@NSManaged var total: NSNumber
@NSManaged var historicTotal: NSNumber
@NSManaged var ordersCount: NSNumber
@NSManaged var historicOrdersCount: NSNumber
@NSManaged var values: [Double] //is it ok?
@NSManaged var location: PBOLocation
}
2. Was deklariere ich in meinem .xcdatamodel?
3. Wie speichere ich dies in meiner Entität? (Ich benutze MagicalRecord)
let statistics = (PBOStatistics.MR_createInContext(context) as! PBOStatistics)
statistics.values = [8, 17.7, 18, 21, 0, 0, 34] //is it enough?
NSManagedObject
:@NSManaged var values: [Double]
ist es gut? Können Sie mir sagen, in welchem Typ ich.xcdatamodel
das speichern soll?Antworten:
Ok, ich habe recherchiert und getestet. Mit dem transformierbaren Typ ist die Lösung einfach:
1. Was deklariere ich in meiner NSManagedObject-Klasse?
2. Was deklariere ich in meinem .xcdatamodel?
Transformable
Datentyp.3. Wie speichere ich dies in meiner Entität?
Oder Wenn Sie es als Binärdaten deklarieren möchten, lesen Sie diesen einfachen Artikel :
quelle
[NSString]
für eine Reihe von ZeichenfolgenSwift 3 Da wir ab Swift 3 keine Implementierungsdateien mehr haben, müssen wir zur xcdatamodeld-Datei gehen, die Entität und das gewünschte Attribut auswählen (in diesem Beispiel heißt es Werte). Setzen Sie es als transformierbar und seine benutzerdefinierte Klasse auf
[Double]
. Verwenden Sie es jetzt als normales Array.quelle
Array in NSData konvertieren
Konvertieren Sie NSData in Array
Zum Beispiel: https://github.com/kkvinokk/Event-Tracker
quelle
Wenn Sie es einfach halten und ein Array als Zeichenfolge speichern
Versuche dies:
Für andere Datentypen:
quelle
Machen Sie den Entitätsattributtyp zu "Binärdaten".
Ruft das ursprüngliche Array wie folgt ab:
Das ist alles.
quelle
Der folgende Code funktioniert für mich, um ein Array von JSON in CoreData zu speichern
quelle