我的应用是适用于iOS的图片浏览器。我允许用户从相机胶卷或云文件提供商处挑选文件。对于选择的每个文件,我创建一个书签,以便用户稍后返回查看该文件,而无需再次完成相机胶卷/云文件选择器的所有步骤。相机胶卷书签一致地工作,但云文件提供商书签通过从调用URLByResolvingBookmarkData
返回nil而随机失败。返回的错误是:
"找不到文件"
来自iCloud,DropBox,Box,Google Drive等的文件会发生这种情况。以下是我创建和检索书签的方式:
// bookmark created from url returned by UIDocumentPickerViewController
NSData *bookmark = [url bookmarkDataWithOptions:options includingResourceValuesForKeys:nil relativeToURL:url error: nil];
// retrieving the URL from this bookmark works for a short time, then returns nil
url = [NSURL URLByResolvingBookmarkData:bookmark options:NSURLBookmarkResolutionWithoutUI relativeToURL:nil bookmarkDataIsStale:&isStale error:&error];
任何人都可以了解为什么书签会工作一段时间,然后失败?有限的存储空间/ RAM?
我觉得答案是保留云存储中的本地文件副本,因为它们不能保证可以多次访问。
答案 0 :(得分:0)
您应该在网址上使用startAccessingSecurityScopedResource
,确保在完成后致电stopAccessingSecurityScopedResource
。
或者,Apple强烈建议使用FileCoordinator或UIDocument来管理对文件的访问。特别是现在您可以访问其他应用也在访问的文件。