Comme approche alternative à la réponse acceptée, vous pouvez simplement changer le typage d'un NSNumber* à un BOOL dans la définition de l'interface de l'objet géré, comme suit :
@property (nonatomic) BOOL useGPS; // Notice that the 'retain' is also removed as we're now dealing with a scalar rather than an NSObject
Différentes approches alternatives sont discutées aquí pero Chris Hanson La réponse de l'auteur a été très éclairante pour moi, en particulier :
Si vous avez un attribut numérique (y compris un attribut booléen) qui est requis, vous pouvez simplement le saisir comme un scalaire à la place, et Core Data fera la bonne chose :
@property (nonatomic) BOOL isDone ;
Même si l'attribut est facultatif, cela fonctionnera toujours - il faudra juste simplement confondre "non présent" et "faux".
et pour une mise en œuvre plus alignée de Cocoa :
Une autre chose que vous pourriez vouloir faire est de nommer la propriété "done" et juste spécifier le getter comme "isDone". C'est la convention de nommage habituelle de Cocoa :
@property (nonatomique, getter=isDone) BOOL fait ;
Vous pouvez alors écrire "if (item.done) { ... }" ou "item.done = NO ;" et le compilateur générera toujours compilateur générera toujours -isDone pour les accès à la propriété.
Merci Chris, et j'espère que cela aidera quelqu'un.