iPhone: Sauvegarder booléens de Base de Données
J'ai mis en place l'une de mes base de données des attributs comme une valeur Booléenne. Maintenant, j'ai besoin de le définir, mais XCode me dit qu'il ne peut pas répondre à setUseGPS.
[ride setUseGPS: useGPS.on];
Quelle est la méthode pour paramètre un booléen dans la base de données? Tous mes autres attributs sont définis de cette façon, et ils travaillent beaucoup. Donc, vous ne savez pas pourquoi un booléen ne fonctionne pas à être réglé de cette façon?
- Découvrez NSNumber.
Vous devez vous connecter pour publier un commentaire.
De base de Données "n'est pas" un type Booléen (il le fait, mais c'est un NSNumber).
De façon à mettre l'équivalent de useGPS = OUI.
Et dans l'autre sens:
Mise à jour:
Comme l'a souligné SKG, Avec des littéraux en Objectif-C, vous pouvez maintenant le faire de façon plus simple:
object.isGPSOn = @YES;
Comme une approche alternative à la accepté de répondre, vous pouvez simplement modifier la saisie à partir d'un NSNumber* pour un BOOL dans l'objet géré la définition de l'interface, tels que:
Diverses autres approches sont discutées ici, mais Chris Hanson's réponse a été des plus instructifs pour moi, surtout:
et pour une meilleure harmonie de Cacao de mise en œuvre:
Merci Chris, et espérons que cela aide quelqu'un.
Juste pour compléter @RickiG réponse, la façon de créer une
NSNumber
à partir d'unBool
et vice-versa, dans Swift (au moins depuis la v4.2) est:Le "fix" pour cela (à mon humble avis, c'est un bug d'Apple SDK) est d'ajouter le code suivant à votre CoreData-classe générée. NB: si vous le faites dans une catégorie, dans un fichier séparé, alors vous n'avez pas à re-copier/coller à chaque fois que vous régénérer le CoreData classes à l'intérieur de Xcode