Я использую 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
.
Возможно, я неправильно объявил свой UTI?Я следовал рекомендациям Apple (в Руководстве по программированию на основе документов для iOS и Обзор унифицированных идентификаторов типов ) при его создании, но, похоже, что-то не так.
Редактировать: В разделе «Экспортированные UTI» в info.plist
мой тип установлен на соответствие «com.apple.package».
Редактировать: Я все еще борюсь с этой проблемой.Сейчас я работаю над этим, не используя расширение файла.
При использовании собственного расширения файла я обрабатываю результаты запроса метаданных iCloud, и файл DocumentMetadata.plist
определенно находится внутри пакета файла,но запрос метаданных не может его увидеть.При перечислении результатов запроса в журнал выводится следующее:
<iCloud Container URL>/Documents/
<iCloud Container URL>/Documents/New%20Document.spdoc/
<iCloud Container URL>/Documents/New%20Document.spdoc/DocumentMetadata.plist
<iCloud Container URL>/Documents/New%20Document.spdoc/StoreContent.nosync/
<iCloud Container URL>/Documents/New%20Document.spdoc/StoreContent.nosync/(A%20Document%20Being%20Saved%20By%20<AppName>%202)/
<iCloud Container URL>/Documents/New%20Document.spdoc/StoreContent.nosync/(A%20Document%20Being%20Saved%20By%20<AppName>)/
<iCloud Container URL>/Documents/New%20Document.spdoc/StoreContent.nosync/.persistentStore_SUPPORT/
<iCloud Container URL>/Documents/New%20Document.spdoc/StoreContent.nosync/.persistentStore_SUPPORT/_EXTERNAL_DATA/
<iCloud Container URL>/Documents/New%20Document.spdoc/StoreContent.nosync/persistentStore
(в каталоге «CoreDataLogs» также есть несколько файлов, однако я их здесь не показывал длякраткость).
Я могу только думать, что эта проблема связана с неправильным созданием моего файлового пакета UTI.Кто-нибудь еще успешно использовал пользовательские пакеты файлов с iCloud?Это ошибка?