Файл монитора с каким-то постоянным идентификатором - PullRequest
2 голосов
/ 21 марта 2020

Мое приложение записывает файлы в общую папку Documents. Я сохраняю путь к файлам, но он ломается, если пользователь меняет имя документа, перемещает документ в другое место и т. Д. c. Есть ли какой-нибудь постоянный идентификатор файла, который я могу использовать для отслеживания этих документов? я копался в

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

, и я нахожу такие атрибуты, как FileAttributeKey.systemFileNumber, но, похоже, это число меняется каждый раз, когда я запускаю приложение. Должен быть какой-то способ отслеживать файлы, отличные от их пути

1 Ответ

2 голосов
/ 21 марта 2020

Вам необходимо использовать 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
}
...