NSMetadataQuery игнорирует тип пользовательского пакета файлов

Я использую 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? Это ошибка?

6
задан Stuart 10 February 2012 в 06:43
поделиться