我创建了一个mac应用程序,用于从用户选择的文件夹加载xml文件,使用该应用程序后,用户保存自定义文件(.adgf) 当我尝试加载.adgf文件(即plist文件)时,我调用了一条记录中的xml路径 dictionaryWithContentsOfFile但它给我一个“零”。我认为问题是沙盒(有时它不会工作)。字符串路径是正确的。 也许当用户加载xml文件时,我应该保存在特定应用程序“文档文件夹”中吗?
编辑: 我现在正在尝试书签数据解决方案,我重新审核了NSURL,但它无法正常工作。我正在使用的代码是:
- (NSData *)bookmarkFromURL:(NSURL *)url {
NSError *error = nil;
NSData *bookmark = [url bookmarkDataWithOptions:NSURLBookmarkCreationWithSecurityScope
includingResourceValuesForKeys:NULL
relativeToURL:NULL
error:&error];
if (error) {
NSLog(@"Error creating bookmark for URL (%@): %@", url, error);
[NSApp presentError:error];
}
return bookmark;
}
- (NSURL *)urlFromBookmark:(NSData *)bookmark {
NSURL *url = [NSURL URLByResolvingBookmarkData:bookmark
options:NSURLBookmarkResolutionWithSecurityScope
relativeToURL:NULL
bookmarkDataIsStale:NO
error:NULL];
return url;
}
答案 0 :(得分:0)
用户存储文件后,您应该使用URL中的书签数据
-[NSURL bookmarkDataWithOptions: includingResourceValuesForKeys: relativeToURL: error:]
使用NSURLBookmarkCreationWithSecurityScope
作为选项。
此NSData对象应该存储在某个地方(plist?),当您想要在以后的会话中再次读取该文件时,您可以使用+[NSURL
URLByResolvingBookmarkData:options:relativeToURL:bookmarkDataIsStale:error:]