2009-09-02 8 views
8

Per ogni dato NSManagedObject, esiste un metodo per restituire un set o un array di chiavi (nomi di attributi) per quel particolare NSManagedObject? Ho provato a cercare nei documenti NSObject & NSManagedObject ma non ho trovato nulla. Qualcosa che funzioni come "allKeys" di NSDictionary sarebbe ciò di cui ho bisogno, cioè.C'è un modo per recuperare un set o una serie di chiavi per un determinato NSManagedObject?

myArrayOfKeys = [myDict allKeys] 

Suppongo che ci sia un modo più semplice di gestire un gran numero di attributi es. iterando su una serie di chiavi.

risposta

14

-[NSManagedObject entity] restituisce NSEntityDescription. Questo ti permette quindi di trovare le sue proprietà, in particolare se vuoi solo i nomi degli attributi puoi ottenere -[NSEntityDescription attributesByName], un dizionario in cui ogni chiave è un nome di attributo e ogni valore è un NSAttributeDescription.

4

Ho scritto quanto segue sulla base del consiglio di James, e presumo che possa essere utile ad altri che risolvono il problema con il loro codice e usano la sua risposta; grazie James!

// da Apple Maestro Particolare progetto modello - (void) insertNewObject: (id) {sender

//! 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; 
Problemi correlati