Encontré una respuesta definitiva de Más desarrollo de iPhone 3 por Dave Mark y Jeff LeMarche.
Si realmente le molesta que utilice un método de NSEntityDescrpiton
más que en NSManagedObjectContext
para insertar un nuevo objeto en un NSManagedObjectContext
, se puede utilizar una categoría añadir un método de instancia a NSManagedObjectContext
.
Crear dos nuevos archivos de texto llamados NSManagedObject-Insert.h y NSManagedObject-Insert.m.
En NSManagedObject-Insert.h, coloque el código siguiente:
import <Cocoa/Cocoa.h>
@interface NSManagedObjectContext (insert)
- (NSManagedObject *)insertNewEntityWithName:(NSString *)name;
@end
En NSManagedObject-Insert.m, colocar este código:
#import "NSManagedObjectContext-insert.h"
@implementation NSManagedObjectContext (insert)
- (NSManagedObject *)insertNewEntityWithName:(NSString *)name
{
return [NSEntityDescription insertNewObjectForEntityForName:name inManagedObjectContext:self];
}
@end
Puede importar NSManagedObject -Insert.h en cualquier lugar donde desee utilizar este nuevo método.A continuación, reemplace las llamadas de inserción contra NSEntityDescription
, como éste:
NSManagedObject *newManagedObject = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context];
con el más corto y más intuitivo uno:
[context insertNewEntityWithName:[entity name]];
no son categorías de los grandes?
Oh sí, pero nunca lo anule 'initWithEntity: insertIntoManagedObjectContext:'. 'awakeFromInsert' es el lugar apropiado para hacer la inicialización. – Alex