2009-09-02 5 views
8

Pour un NSManagedObject donné, existe-t-il une méthode pour renvoyer un ensemble ou un tableau de clés (noms d'attribut) pour ce NSManagedObject particulier? J'ai essayé de regarder autour dans NSObject & NSManagedObject docs mais n'a rien trouvé. Quelque chose qui fonctionne comme NSDictionary 'allKeys' serait ce dont j'ai besoin, c'est à dire. Je suppose qu'il doit y avoir un moyen plus facile de gérer un grand nombre d'attributs, par exemple. itérer sur un tableau de clés.Existe-t-il un moyen de récupérer un ensemble ou un tableau de clés pour un objet NSManagedObject donné?

Répondre

14

-[NSManagedObject entity] renvoie le NSEntityDescription. Cela vous permet ensuite de trouver ses propriétés, en particulier si vous voulez juste les noms d'attribut que vous pouvez obtenir -[NSEntityDescription attributesByName], un dictionnaire où chaque clé est un nom d'attribut et chaque valeur est NSAttributeDescription.

4

J'ai écrit ce qui suit sur la base des conseils de James, et présume qu'il pourrait être utile aux autres de dépanner leur code et d'utiliser sa réponse; merci James!

// à partir du modèle Détail de maître d'Apple projet - (void) insertNewObject: (id) de l'expéditeur {

//! Apple standard template code 
NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext]; 
NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity]; 
NSManagedObject *newManagedObject = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context]; 

//! Slowburner addition to view the managedObject's keys 
NSEntityDescription *attDesc = [newManagedObject entity]; 
NSDictionary *attributesByName = [attDesc attributesByName]; 
NSLog(@"Names:%@",[attributesByName allKeys]); 

//! shortcut to avoid whatever problem you're troubleshooting 
return; 
Questions connexes