Разрешение данных закладки URL-адреса iOS в конечном итоге начинает давать сбой

У меня есть приложение для 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 и не вижу ничего существенного в своих реализациях по сравнению с другими. Ищу любые советы или мысли о том, что может быть причиной этой проблемы.


person Ryan Ashcraft    schedule 15.12.2018    source источник


Ответы (1)


Оказывается, проблема заключалась в том, что я сохранял не закладку на исходный файл, а копию, хранящуюся в каталоге tmp. Недавно я что-то рефакторил и случайно начал использовать UIDocumentPickerMode.import вместо UIDocumentPickerMode.open. Это объясняет, почему это работало в течение произвольного периода времени, пока каталог tmp не был очищен.

person Ryan Ashcraft    schedule 16.12.2018