2009-09-02 23 views
8

Para cualquier NSManagedObject dado, ¿hay algún método para devolver un conjunto o matriz de claves (nombres de atributos) para ese NSManagedObject en particular? He intentado buscar en NSObject & NSManagedObject docs pero no encontré nada. Algo que funciona como NSDictionary 'allKeys' sería lo que necesito, es decir.¿Hay alguna forma de recuperar un conjunto o conjunto de claves para un NSManagedObject determinado?

myArrayOfKeys = [myDict allKeys] 

Supongo que debe haber una manera más fácil de manejar un gran número de atributos, por ejemplo. iterando sobre una matriz de teclas.

Respuesta

14

-[NSManagedObject entity] devuelve NSEntityDescription. Esto le permite encontrar sus propiedades, en particular si solo desea los nombres de los atributos, puede obtener -[NSEntityDescription attributesByName], un diccionario donde cada clave es un nombre de atributo y cada valor es NSAttributeDescription.

4

Escribí lo siguiente con base en los consejos de James, y supongo que podría ser útil para otros que solucionan el problema de su código y usan su respuesta; gracias James!

// del proyecto de plantilla Detalle Maestro de Apple - (void) insertNewObject: (id) {emisor

//! 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; 
Cuestiones relacionadas