Quand dois-je cocher la case "utiliser les propriétés scalaires pour les types de données primitifs" lors de la création d'une base de données ? NSManagedObject
des objets ?
Ce que cela va me coûter (ma base de données va-t-elle améliorer ses performances ou être plus légère) ?
Réponses
Trop de publicités?Avant iOS 5 et OSX 10.7, les propriétés scalaires ne pouvaient pas être générées automatiquement et vous deviez ajouter des implémentations setter et getter, ce qui entraînait des pénalités. Les propriétés auto-générées sont optimisées. Je ne suis pas au courant d'autres pénalités.
Les propriétés scalaires et non scalaires sont représentées par les mêmes types dans la BD, il n'y aura donc aucun changement dans la taille de la BD.
Vous devez choisir quand utiliser scalaire en fonction de la façon dont vous allez accéder à ces propriétés. Par exemple, vous devrez envelopper les propriétés scalaires dans un objet cacao si vous comptez les ajouter à une collection (NSArray, NSSet, NSDictionary).
Core Data prend en charge de nombreux types de données courants tels que les entiers, les flottants, les booléens, etc. Cependant, par défaut, l'éditeur de modèle de données génère ces attributs sous la forme de
NSNumber
dans les sous-classes de l'objet géré. Il en résulte souvent d'interminablesfloatValue
,boolValue
,integerValue
ou des appels similaires sur cesNSNumber
dans le code de l'application.Mais nous pouvons aussi simplement spécifier ces propriétés avec leur type scalaire correct, par exemple sous la forme suivante
int64_t
,float_t
oBOOL
et il fonctionnera avec Core Data. Xcode a même une petite case à cocher dans la boîte de dialogue de sauvegarde de l'applicationNSManagedObject
("Use scalar properties for primitive data types") qui fait cela pour vous.