0

我正在尝试创建一个尚不存在的 UIManagedDocument。这是我的代码:

url = [NSURL URLWithString:@"file://ProjectSSDB"];
document = [[UIManagedDocument alloc] initWithFileURL:url];

if ([[NSFileManager defaultManager] fileExistsAtPath:[url path]]) {
    [document openWithCompletionHandler: ^(BOOL success) {
        if (success) [ProjectSSViewController documentIsReady];
        if (!success) NSLog(@"Couldn't open document at %@", url);
    }];
} else {
    [document saveToURL:url forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success) {
        NSLog(@"Returned %d", success);
        if (success) [ProjectSSViewController documentIsReady];
        if (!success) NSLog(@"Couldn't create document at %@", url);
    }];
} 

我的问题是该文件尚不存在,并且 saveToURL 操作似乎总是返回 false。无论如何我可以进一步调试为什么会发生这种情况?

编辑:

好的,所以我无法写入该 URL。我现在尝试这样做:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

NSURL *url = [NSURL URLWithString:documentsDirectory];

NSLog(@"The URL is %@", [url absoluteString]);

当它运行时,日志似乎返回 URL 为空。还有什么我做错了吗?

4

2 回答 2

1

你不能在这个路径写“file://ProjectSSDB”,你没有权限,你需要通过这种方式获取你的应用程序的根:

NSString* rootPath = NSHomeDirectory();

并将数据保存在Apple 文件系统指南指定的子文件夹之一中

NSString* fullPath = [rootPath stringByAppendingPathComponent:@"subFoldeder/file.extension"];
于 2013-06-13T08:26:30.073 回答
0

UIManagedDocument很长一段时间以来,我一直在成功使用以下代码片段来生成URL

NSURL *url = [NSFileManager.defaultManager URLsForDirectory:NSLibraryDirectory inDomains:NSUserDomainMask].firstObject;
url = [url URLByAppendingPathComponent:@"ARBITRARY_NAME"];

self.document = [UIManagedDocument.alloc initWithFileURL:url];

ps:是iOS 5+的解决方案。

让我知道这是否适合你;)

于 2014-06-17T10:26:09.113 回答