2010-04-30 5 views
3

J'ai le bit de code suivant dans un de mes méthodes:Comment accéder aux attributs d'une entité de base de données dans le code?

... 
NSNumber *selectedRecordID = [NSNumber numberWithInt:ABRecordGetRecordID(person)]; 
for (NSManagedObject *managedObject in fetchedResultsController.fetchedObjects) { 
    if (selectedRecordID == managedObject.contactID) { // this line generates a compiler error 
    // do some stuff 
    } 

La ligne indiquée génère l'erreur de compilation « Demande de « contactID » quelque chose pas une structure ou un syndicat. » Cependant, 'contactID' est un attribut des entités récupérées par le contrôleur de résultats récupérés, et est présent dans les déclarations @property générées par Core Data.

Qu'est-ce qui me manque ici? Merci d'avance pour toute aide que vous pouvez donner.

Répondre

2

Mais 'contactID' n'est pas une propriété de la classe de base NSManagedObject, c'est une propriété de votre propre classe d'entité. Pour la propriété d'être reconnu par le compilateur, vous devez déclarer l'objet récupéré à l'aide du type approprié, par exemple:

for (MyEntity *managedObject in fetchedResultsController.fetchedObjects) { 
if (selectedRecordID == managedObject.contactID) { 
} 
+0

qui a fait il; Merci pour l'aide. – Andy

4

Vous pouvez également utiliser KVC et éviter subclassing via:

[managedObject valueForKey:@"contactID"]; 
Questions connexes