Я использую UIManagedDocument
s для управления своими файлами в iCloud. После настройки NSMetadataQuery
следующим образом:
iCloudQuery = [[NSMetadataQuery alloc] init];
[iCloudQuery setSearchScopes:
[NSArray arrayWithObject:NSMetadataQueryUbiquitousDocumentsScope]];
[iCloudQuery setPredicate:
[NSPredicate predicateWithFormat:@"%K like %@", NSMetadataItemFSNameKey, @"DocumentMetadata.plist"]];
Я столкнулся с любопытной проблемой - когда мои документы названы без расширения файла (например, @ "NewDocument2"
) или общедоступное расширение, такое как .txt
, запрос метаданных правильно находит файл DocumentMetadata.plist
. Однако при использовании моего настраиваемого расширения файла запрос никогда ничего не находит ... ни при запуске запроса, ни при добавлении нового документа.
Мне кажется, что запрос, вероятно, видит мой документ с его настраиваемым расширением файла, не понимая, что это, на самом деле, каталог (во всяком случае, пакет файлов), и поэтому не заглядывает внутрь, чтобы найти файл DocumentMetadata.plist
. Однако я объявил свой пользовательский UTI в приложении info.plist
.
Возможно, я неправильно указал на ИМП? Я следовал рекомендациям Apple (в Руководстве по программированию приложений на основе документов для iOS и Обзор универсальных идентификаторов типов ) при его создании, но похоже, что что-то не так.
Изменить: В разделе «Экспортированные UTI» в info.plist
мой тип установлен в соответствии с «com.apple.package».
Изменить: Я все еще борюсь с этой проблемой. Я пока работаю над этим, не используя расширение файла.
При использовании пользовательского расширения файла я обрабатываю результаты запроса метаданных iCloud, и файл DocumentMetadata.plist
определенно находится внутри пакета файлов, но запрос метаданных не может его увидеть. При перечислении результатов запроса в журнал печатается следующее:
/Documents/
/Documents/New%20Document.spdoc/
/Documents/New%20Document.spdoc/DocumentMetadata.plist
/Documents/New%20Document.spdoc/StoreContent.nosync/
/Documents/New%20Document.spdoc/StoreContent.nosync/(A%20Document%20Being%20Saved%20By%20%202)/
/Documents/New%20Document.spdoc/StoreContent.nosync/(A%20Document%20Being%20Saved%20By%20)/
/Documents/New%20Document.spdoc/StoreContent.nosync/.persistentStore_SUPPORT/
/Documents/New%20Document.spdoc/StoreContent.nosync/.persistentStore_SUPPORT/_EXTERNAL_DATA/
/Documents/New%20Document.spdoc/StoreContent.nosync/persistentStore
(В каталоге «CoreDataLogs» также есть куча файлов, но я не показывал их здесь для краткости).
Я могу только думать, что эта проблема связана с некорректным созданием моего файлового пакета UTI. Кто-нибудь еще успешно использовал пользовательские пакеты файлов с iCloud? Это ошибка?