NSURL URLByResolvingBookmarkData似乎随机失败

时间:2016-01-01 10:39:01

标签: ios nsurl

我的应用是适用于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?

我觉得答案是保留云存储中的本地文件副本,因为它们不能保证可以多次访问。

1 个答案:

答案 0 :(得分:0)

您应该在网址上使用startAccessingSecurityScopedResource,确保在完成后致电stopAccessingSecurityScopedResource

或者,Apple强烈建议使用FileCoordinator或UIDocument来管理对文件的访问。特别是现在您可以访问其他应用也在访问的文件。