Ya he echado un vistazo a How do I create a global UIManagedDocument instance per document-on-disk shared by my whole application using blocks? pero realmente no lo entiendo.¿Cómo comparto un UIManagedDocument entre diferentes objetos?
Lo que quiero lograr es que solo haya un UIManagedDocument, una base de datos central, para toda la aplicación. Los diferentes objetos deberían llamar a un método y obtener el único UIManagedDocument.
utilizo una clase de ayuda con un método de la clase:
+ (UIManagedDocument *)getsharedDatabase:(NSString *)databaseName
{
NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
url = [url URLByAppendingPathComponent:databaseName];
// url is now "<Documents Directory>/<databaseName>"
if (![[NSFileManager defaultManager] fileExistsAtPath:[url absoluteString]])
{
// does not exist on disk, so create one
UIManagedDocument *managedDocument = [[UIManagedDocument alloc] initWithFileURL:url];
return managedDocument;
}
else
{
UIManagedDocument *managedDocument = **?????**
return managedDocument;
}
}
Como se puede ver por los signos de interrogación, no sé cómo obtener el archivo existente. Revisé la referencia de la clase UIManagedDocument pero no pude encontrarla.
¿Me puede ayudar, por favor? Muchas gracias de antemano.
EDITAR Me preguntaba ... ¿qué pasa con un método singleton tales como:
+ (UIManagedDocument *) sharedDatabase
{
NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
url = [url URLByAppendingPathComponent:@"databaseName"];
// url is now "<Documents Directory>/databaseName"
static UIManagedDocument *managedDocument = nil;
static dispatch_once_t mngddoc;
dispatch_once(&mngddoc, ^{
managedDocument = [[UIManagedDocument alloc] initWithFileURL:url];
});
return managedDocument;
}
su método de Singleton se ve como el camino a seguir. puede mover el código de creación de url dentro de dispatch_once para optimizarlo. – Felix
Genial, gracias, para dar crédito donde se debe crédito: Colin Wheeler fue mi inspiración - http://stackoverflow.com/a/2200751/1096476 – uem