我正在尝试保存从iCloud文档选择器(UIDocumentPickerViewController)返回的安全范围内的URL

该文档指出:

如果URL不是普遍存在的URL,请使用以下命令将书签保存到文件中

bookmarkDataWithOptions:includesResourceValuesForKeys:relativeToURL:错误:
方法并传入NSURLBookmarkCreationWithSecurityScope
选项。调用此方法将创建一个书签,其中包含
安全范围内的URL,可用于直接打开文件
用户干预。

但是,编译器说iOS上不支持NSURLBookmarkCreationWithSecurityScope。

有人知道这是怎么回事...?

最佳答案

进一步挖掘后,发现在IOS中创建书签数据时根本不需要选项NSURLBookmarkCreationWithSecurityScope。这是OS X的选项。您只需在选项字段中输入nil即可。我认为苹果的文件充其量是令人困惑的。
但是,您确实需要在创建书签之前调用startAccessingSecurityScopedResource并确保在继续之前调用返回1(成功)。否则,书签创建将失败。这是示例代码:

 if ([url startAccessingSecurityScopedResource]==1) {
     NSError *error;
     NSData *bookmark = [url bookmarkDataWithOptions:nil
                      includingResourceValuesForKeys:nil
                                       relativeToURL:nil
                                               error:&error];
     if (error) {
        //handle error condition
     } else {
        // save your bookmark
     }
 }
 [url stopAccessingSecurityScopedResource];
同样,Apple的文件充其量是最令人困惑的!我花了很多时间才发现这一点。希望这可以帮助。

10-08 14:52