NSURL.BookmarkCreationOptions中没有withSecurityScope

时间:2018-09-26 19:26:42

标签: ios swift xcode

我正在尝试将URL保存为书签,以持久访问iphone上的文件。 为此,我要调用git函数。 但是为了防止出现错误,例如:

bookmarkData

我正在尝试在调用函数时添加Error Domain=NSCocoaErrorDomain Code=260 "The file couldn’t be opened because it doesn’t exist."选项。 尽管我在Apple文档中找到了对该选项的多个引用,但在使用withSecurityScope时似乎无法找到它。它只说NSURL.BookmarkCreationOptions.withSecurityScope。我也仔细检查了类的定义,但还是没有运气。

我希望有人可以在这里帮助我。 非常感谢!

1 个答案:

答案 0 :(得分:0)

有两个阶段。

  1. 您必须在获得许可后(例如在NSOpenPanel中)从URL创建书签数据并将其保存

    let data = try url.bookmarkData(options: [.withSecurityScope])
    UserDefaults.standard.set(data, forKey: "mySecureURL")
    
  2. 要使用它,请从UserDefaults获取数据并对其进行解析

    guard let data = UserDefaults.standard.data(forKey: "mySecureURL") else { // do some error handling }
    var isStale = false
    let url = try URL(resolvingBookmarkData: data, options:[.withSecurityScope], bookmarkDataIsStale: &isStale) 
    if isStale { // create new bookmark data from the current url and save it again described in 1. }
    

    现在您可以使用url,但必须将其包装在这两行中

    url.startAccessingSecurityScopedResource()
    // do something with `url`
    url.stopAccessingSecurityScopedResource()