我已经查看了如何使用块创建一个全局UIManagedDocument实例,以便整个应用程序共享,但我并不是很理解。
我的目标是整个应用程序只有一个UIManagedDocument - 一个核心数据数据库。不同的对象应该调用一个方法并获取唯一的UIManagedDocument。
我使用一个带有类方法的帮助器类:
我的目标是整个应用程序只有一个UIManagedDocument - 一个核心数据数据库。不同的对象应该调用一个方法并获取唯一的UIManagedDocument。
我使用一个带有类方法的帮助器类:
+ (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;
}
}
从问号可以看出,我不知道如何获取现有的文件。我查看了UIManagedDocument类参考文档,但没有找到它。
请帮帮我,非常感谢。
编辑 我在想...那么一个单例方法怎么样呢:
+ (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;
}