Question

J'ai un code dans une application qui crée un objet géré CoreData. Dans ce code, j'utilise la ligne suivante pour définir une propriété:

theAuthor.authorID = 1;

La propriété est déclarée comme celui-ci dans l'en-tête d'objet géré:

@property (nonatomic) uint32_t authorID;

Dans iOS 5, il fonctionne très bien, mais quand je debug dans iOS 4.3, je reçois cette erreur:

Propriété « AuthorID » est un type scalaire sur la classe « Auteur ». Impossible de générer une méthode setter pour elle.

Pourquoi ai-je cette erreur en 4.3, mais pas 5? Dois-je éviterons propriétés scalaires? Je suis venu à Obj-C de C, donc je préfère travailler avec scalaires quand je peux, car il se sent plus optimisé.

Serais-je mieux mettre en œuvre les accesseurs ou changer mon code pour utiliser NSInteger ou NSNumber à la place?

Était-ce utile?

La solution

Voir ici informations sur l'utilisation des attributs scalaires dans les données de base. (Soit dit en passant, NSInteger est un scalaire). Listing 3 est le particulier qui vous intéresse. Fondamentalement, vous devez écrire votre propre accesseur pour elle, mais il est pas difficile.

Au iOS5, vous pouvez utiliser les propriétés scalaires dans les données de base. Ceci peut être réalisé en cochant la case appropriée lors de la génération des sous-classes d'objets gérés à partir du modèle de données.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top