我正在创建沙盒 macOS 应用程序。我从中获取文件 url NSOpenPanel
,创建书签数据并保存到数据存储中。然后我可以成功地从书签数据中恢复 url 并从我的应用程序中访问文件数据。
我在项目中还有另一个目标XPC Service
,我将恢复的 url 传递给这个目标,但是当我尝试从中读取文件时,我无法访问来自这个 url 的文件XPC Service
。
我的基本应用程序和XPC Service
目标都有
com.apple.security.files.bookmarks.app-scope
com.apple.security.files.bookmarks.document-scope
com.apple.security.files.user-selected.read-write
我应该怎么做才能从目标中恢复的 url 访问文件XPC Service
?我可以从中复制或删除文件XPC Service
吗?
基础应用
NSURL *url = [NSURL URLByResolvingBookmarkData:file.bookmarkData
options:NSURLBookmarkResolutionWithSecurityScope
relativeToURL:nil
bookmarkDataIsStale:nil
error:nil];
[url startAccessingSecurityScopedResource];
...
[self.connection.remoteObjectProxy getDataFromURL:url
withReply:aReply];
XPC服务
- (void)getDataFromURL:(NSURL *)anURL
withReply:(void (^)(NSData *))aReply {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
aReply([NSData dataWithContentsOfURL:anURL]);
});
}
[NSData dataWithContentsOfURL:anURL]
是nil