Już rzuciłem okiem na How do I create a global UIManagedDocument instance per document-on-disk shared by my whole application using blocks?, ale tak naprawdę nie rozumiem.Jak udostępnić jeden obiekt UIManagedDocument między różnymi obiektami?
Co chcę osiągnąć to to, że powinien istnieć tylko jeden UIManagedDocument - podstawowa baza danych - dla całej aplikacji. Różne obiekty powinny wywoływać metodę i uzyskać jedyny UIManagedDocument.
używam klasy pomocnika z metody klasy:
+ (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;
}
}
Jak widać przez znaki zapytania, nie wiem jak dostać się istniejący plik. Sprawdziłem odwołanie do klasy UIManagedDocument, ale nie mogłem go znaleźć.
Czy możesz mi pomóc, proszę? Bardzo dziękuję z góry.
EDIT Zastanawiałem się ... co o metody singleton takich jak:
+ (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;
}
Twój Singleton metoda wygląda droga. możesz przenieść kod tworzenia adresu URL do dispatch_once, aby go zoptymalizować. – Felix
Wspaniale, dziękuję, aby dać kredyt tam, gdzie należy się kredyt: Colin Wheeler był moją inspiracją - http://stackoverflow.com/a/2200751/1096476 – uem