J'ai besoin de sauvegarder ma matrice dans Core Data.
let array = [8, 17.7, 18, 21, 0, 0, 34]
Les valeurs à l'intérieur de ce tableau et le nombre de valeurs sont variables.
1. Que dois-je déclarer dans ma classe NSManagedObject?
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. Que dois-je déclarer dans mon .xcdatamodel?
3. Comment puis-je enregistrer cela dans mon entité? (J'utilise 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]
est-ce bon? Pouvez-vous me dire quel type dois-je utiliser.xcdatamodel
pour enregistrer cela?Réponses:
Ok, j'ai fait des recherches et des tests. Utilisation de transformable type , la solution est simple:
1. Que dois-je déclarer dans ma classe NSManagedObject?
2. Que dois-je déclarer dans mon .xcdatamodel?
Transformable
Type de données.3. Comment puis-je enregistrer cela dans mon entité?
Ou si vous souhaitez le déclarer en tant que données binaires, lisez cet article simple :
la source
[NSString]
pour un tableau de chaînesSwift 3 Comme nous n'avons plus les fichiers d'implémentation à partir de Swift 3, ce que nous devons faire est d'aller dans le fichier xcdatamodeld, sélectionner l'entité et l'attribut souhaité (dans cet exemple, cela s'appelle values). Définissez-le comme transformable et sa classe personnalisée sur
[Double]
. Maintenant, utilisez-le comme un tableau normal.la source
Convertir un tableau en NSData
Convertir NSData en tableau
Par exemple: https://github.com/kkvinokk/Event-Tracker
la source
Si vous restez simple et stockez un tableau sous forme de chaîne
Essaye ça:
Pour les autres types de données respectivement:
la source
Définir le type d'attribut d'entité comme "Données binaires"
Récupérez la matrice d'origine comme:
C'est tout.
la source
Le code suivant fonctionne pour moi pour stocker un tableau de JSON dans CoreData
la source