2010-08-29 13 views
5

En los datos básicos para el iPhone, estaba recibiendo todo tipo de errores al intentar guardar datos en un NSManagedObjectContext.cómo se crea un NSManagedObjectContext

Creo que mis problemas tenían que ver conmigo usando un NSManagedObjectContext que se estaba utilizando en varios subprocesos.

así que quería crear un nuevo NSManagedObjectContext y tratar de eso, pero no puedo encontrar el código de ejemplo para crear una nueva instancia simplemente ...

Sé que es simple, pero realmente agradecería cualquier ayuda aquí.

Nota, he visto este artículo sobre la documentación de Apple: http://developer.apple.com/iphone/library/documentation/cocoa/conceptual/CoreDataUtilityTutorial/Articles/05_createStack.html

Pero esto utiliza un código que no estoy familiarizado, como el XMLStore que no es compatible en el iPhone, etc.

Respuesta

14

este es el código para crear un nuevo contexto:

- (NSManagedObjectContext *)managedObjectContext { 
    NSManagedObjectContext *managedObjectContext = nil; 

    NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator]; 
    if (coordinator != nil) { 
     managedObjectContext = [[NSManagedObjectContext alloc] init]; 
     [managedObjectContext setPersistentStoreCoordinator:coordinator]; 
     [managedObjectContext setUndoManager:nil]; 
    } 
    return [managedObjectContext autorelease]; 
} 

es simplemente crear una nueva instancia del contexto y ajuste la tienda que le gustaría usar.

Si tiene varias tiendas, va a ir para algo así:

- (NSManagedObjectContext *)managedObjectContextForStore:(NSString *)store { 
    NSManagedObjectContext *managedObjectContext = nil; 

    NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinatorForStore:store]; 
    if (coordinator != nil) { 
     managedObjectContext = [[NSManagedObjectContext alloc] init]; 
     [managedObjectContext setPersistentStoreCoordinator:coordinator]; 
     [managedObjectContext setUndoManager:nil]; 
    } 
    return [managedObjectContext autorelease]; 
} 

Para obtener más información, por favor, echar un vistazo a Apple's Core Data Tutorial for iOS.

¡Salud!

+1

Gracias VFN, aunque ¿de dónde viene '[auto persistentStoreCoordinator]'? ¿Es eso heredado de una súper clase? Estoy en una clase de utilidad con mi código, ¿cómo debo obtener el persistentStoreCoordinator? – Mark

+1

Debe implementar el código para la configuración de su tienda de persistencia. Eche un vistazo a esta muestra de Apple: http://developer.apple.com/iphone/library/samplecode/TopSongs/Introduction/Intro.html – vfn

+0

¿Es seguro usar el MOC del hilo principal para obtener el persistentStoreCoordinator? Dudo que lo sea, pero solo pregunto ... – Mark

Cuestiones relacionadas