Je travaille sur une application qui utilise les données de base comme backend pour la gestion des enregistrements SQLite. J'ai tout travaillé avec des chaînes et des nombres, mais j'ai juste essayé d'ajouter des champs BOOL et je n'arrive pas à faire fonctionner les choses.Configuration des données de base et de BOOL
Dans le .xcdatamodel, j'ai ajouté un champ à mon objet appelé isCurrentlyForSale
qui n'est pas optionnel, pas transitoire, et non indexé. Le type de l'attribut est défini sur Boolean avec la valeur par défaut NO.
Lorsque j'ai créé les fichiers de classe à partir du modèle de données, le code boilerplate ajouté pour cette propriété dans l'en-tête .h était:
@property (nonatomic, retain) NSNumber * isCurrentlyForSale;
avec le
@dynamic isCurrentlyForSale;
dans le .m fichier d'implémentation.
J'ai toujours travaillé avec des booléens comme de simples BOOL. J'ai lu que je pourrais utiliser les méthodes numberWithBool
et boolValue
de NSNumber, mais cela semble être un énorme lot de code supplémentaire pour quelque chose d'aussi simple.
Le @property dans l'en-tête peut-il être changé en simple BOOL? Si oui, y a-t-il quelque chose à surveiller?
Merci -John
Un setter ou une propriété doit avoir "is" dedans. C'est pourquoi '@ property' a le paramètre' getter = '. Et oui, vous pouvez faire en sorte que '@ property' soit changé en BOOL en utilisant les accesseurs primitifs qui font partie des Core Data. –
@Marcus Oui, je sais que les setters ne devraient pas avoir 'Is' dedans, mais je l'ai mis parce que' setCurrentlyForSale: 'était déjà pris par CD (et je suis conscient de' getter = 'et' setter = '. Et dites-vous que vous pouvez simplement changer le 'NSNumber *' à 'BOOL' dans l'en-tête et ça va marcher?Cela me surprendrait * définitivement *. –