我正在尝试创建一个尚不存在的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。无论如何我可以进一步调试这为什么会发生这种情况?
修改
好的,所以我无法写入该网址。我现在尝试这样做:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSURL *url = [NSURL URLWithString:documentsDirectory];
NSLog(@"The URL is %@", [url absoluteString]);
运行时,日志似乎返回URL为null。还有别的我做错了吗?
答案 0 :(得分:1)
你不能在这条路径上写“file:// ProjectSSDB”,你没有权限,你需要以这种方式获取应用程序的根目录:
NSString* rootPath = NSHomeDirectory();
并将数据保存在Apple file system guide line
指定的子文件夹之一中NSString* fullPath = [rootPath stringByAppendingPathComponent:@"subFoldeder/file.extension"];
答案 1 :(得分:0)
我已成功使用以下代码段生成UIManagedDocument
的网址一段时间了:
NSURL *url = [NSFileManager.defaultManager URLsForDirectory:NSLibraryDirectory inDomains:NSUserDomainMask].firstObject;
url = [url URLByAppendingPathComponent:@"ARBITRARY_NAME"];
self.document = [UIManagedDocument.alloc initWithFileURL:url];
P.s:它是iOS 5+解决方案。
请告诉我这是否适合您;)