Определите UIDocument однозначно

Я работаю над приложением на основе документов с UIDocumentBrowserViewController. Само приложение создает текстовые файлы, которые пользователь может редактировать и сохранять.

Я хочу отправить эти файлы в приложение-компаньон на Apple Watch. Затем пользователь может прочитать их на часах. UIDocument читается моим приложением и преобразуется для отправки с помощью WCSession.

Теперь вопрос: как я могу однозначно идентифицировать UIDocument?

Я знаю, что мог бы сделать свой собственный идентификатор, вставив UUID в имя файла или в конец каждого текстового файла, но это не самое приятное решение.

2 ответа

Решение

Apple рекомендует использовать UUID для подхода с именем файла, но упоминает, что пользователь может изменить отображаемое имя после его создания.

Класс UIDocument предполагает соответствие между именем файла документа и именем документа (также известным как отображаемое имя). По умолчанию UIDocument хранит имя файла как значение свойства localizedName. Однако приложение не должно требовать, чтобы пользователь предоставлял имя файла или отображаемое имя при создании нового документа.

Для вашего приложения вы должны разработать соглашение для автоматической генерации имен файлов для ваших новых документов. Некоторые предложения:

  • Создайте UUID (универсальный уникальный идентификатор) для каждого документа, при необходимости с префиксом для конкретного приложения.

  • Создайте временную метку (дату и время) для каждого документа, необязательно с префиксом для конкретного приложения.

  • Используйте систему последовательной нумерации, например: "Примечания 1", "Примечания 2" и т. Д.

Для имени документа (отображаемого) вы могли бы изначально использовать имя файла документа, если это имеет смысл (например, "Примечания 1"). Или, если документ содержит текст и пользователь вводит какой-то текст в документ, вы можете использовать первую строку (или некоторую часть первой строки) в качестве отображаемого имени. Ваше приложение может дать пользователям возможность настраивать имя документа после его создания.

Почему ты не используешь URLResourceKey.documentIdentifierKey? Это постоянный идентификатор, который отслеживает документ при переименовании и сохранении.

Другие вопросы по тегам