gpt4 book ai didi

iphone - 如何在不同对象之间共享一个 UIManagedDocument?

转载 作者:行者123 更新时间:2023-12-03 19:02:00 25 4
gpt4 key购买 nike

我已经看过 How do I create a global UIManagedDocument instance per document-on-disk shared by my whole application using blocks?但我不太明白。

我想要实现的是整个应用程序应该只有一个 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;
}

最佳答案

如果磁盘上已有 UIManagedDocuments,则需要在目录中搜索匹配的文件。通常,这些文件会有一些标识属性,例如通用文件扩展名。

类似这样的事情:

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
NSURL *appDirectoryURL = [appDelegate applicationDocumentsDirectory];
NSArray *directoryContents = [[NSFileManager defaultManager] contentsOfDirectoryAtURL:appDirectoryURL includingPropertiesForKeys:nil options:NSDirectoryEnumerationSkipsHiddenFiles error:nil];

for (NSURL *fileURL in directoryContents) {
NSString *documentExtension = [fileURL pathExtension];

if ([documentExtension isEqualToString:@"myfileextension"]) {
}
}

关于iphone - 如何在不同对象之间共享一个 UIManagedDocument?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9430056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com