使用某种持久性 ID 监视文件

Monitor file with some kind of persistent id

我的应用程序将文件写入用户共享的文档目录。我保存了文件路径,但如果用户更改文档名称、将文档移动到新位置等,这就会中断。是否有某种持久文件 ID 可以用来跟踪这些文档? 我一直在四处寻找

FileManager.default.attributesOfItem(atPath: docUrl.path)

并且我找到了 FileAttributeKey.systemFileNumber 之类的属性,但是每次我 运行 应用程序时,这个数字似乎都会改变。必须有一些方法来跟踪文件而不是它们的路径

您需要使用url个书签,如下图(沙哑)

if let bookmark = try? URL(fileURLWithPath: docUrl.path)
                         .bookmarkData(includingResourceValuesForKeys: nil, 
                                       relativeTo:nil) {
    // store somewhere persistent bookmark to your file
}

... 

let bookmark = // read bookmark from persisten storage
var stale = false
if let url = try? URL(resolvingBookmarkData:bookmark, bookmarkDataIsStale: &stale) {
    // work with resolved url
} else {
    // file disappeared - handle the situation
}