我有一个 iOS 应用程序,我正在尝试使用 UserDefaults 持久化和重新加载书签数据。似乎工作正常,但我遇到了一个问题,有时从书签数据到 URL 的转换失败。它似乎可以在一段时间内正常工作(甚至在应用程序终止和重新启动等过程中),但最终书签数据会失败(可能在几个小时后?)。
因此,当像这样解析书签数据时:
let url = try URL(resolvingBookmarkData: data, bookmarkDataIsStale: &isStale)
捕获的异常被抛出并带有描述:Error Domain=NSCocoaErrorDomain Code=4 "The file doesn’t exist."
我将书签作为数据存储在 UserDefaults 中。我只需使用以下内容创建书签数据:
let bookmarkData = try url.bookmarkData(options: .minimalBookmark)
有趣的是,如果我再次从文档选择器中手动选择相同的文件,那么存储在 UserDefaults 中的原始书签将再次可以访问。
我查看了 GitHub 中的开源代码,并没有发现我的实现与其他实现有任何实质性不同。寻找有关可能导致此问题的任何提示或想法。