Как заставить NSMetadataQuery видеть папки с моими сохраненными документами как пакеты?

Я пишу приложение, которое сохраняет и загружает документы как локально, так и в iCloud. Локально работает нормально, но у меня проблема с iCloud.

Документы сохраняются как пакет - UIDocument читает и записывает NSFileWrapper, который содержит файл изображения, файл миниатюр и информационный лист. Когда я сохраняю документ в iCloud, а затем просматриваю файлы в разделе «Управление хранилищем», я вижу отдельные файлы вместо пакетов; и, что более важно, когда я ищу файлы с помощью NSMetadataQuery, он возвращает NSMetadataItem для каждого из отдельных файлов вместо пакетов. В результате мое приложение не понимает, есть ли какие-либо пакеты для загрузки, и iCloud бесполезен.

Я подумал, что если я настрою тип документа и правильно экспортировал UTI, пакеты будут обрабатываться должным образом. Это правда? Если да, то каков контрольный список для настройки типа документа как пакета? У меня есть:

  • Добавлен тип документа
  • установите LSTypeIsPackage в YES (я пробовал строки YES и bool YES)
  • установите CFBundleTypeExtensions в массив, содержащий одну строку: суффикс файла
  • установите LSHandlerRank на Owner
  • Экспортировал UTI с тем же идентификатором
  • установите его в соответствии с com.apple.package
  • добавлен словарь UITypeTagSpecification, содержащий массив для ключа public.filename-extension, который содержит одну строку: суффикс файла

Я также попытался добавить соответствующий импортированный UTI, соответствующий экспортированному, но безуспешно.

Что я пропустил?

ОБНОВЛЕНИЕ: я замечаю, что OP в этом вопросе видит поведение, которое я хочу (даже если он этого не хочет), так что это должно быть возможно.


person Simon    schedule 09.06.2012    source источник


Ответы (1)


На основании этого я попытался удалить LSItemContentTypes из мой лист, и это сработало.

person Simon    schedule 09.06.2012
comment
ух ты. Я почти месяц бился головой о клавиатуру из-за этой проблемы. Это явно похоже на ошибку. Спасибо. - person auco; 21.02.2013
comment
У меня такая же проблема со вчерашнего дня. Я не могу решить эту проблему, удалив LSItemContentTypes. Пожалуйста, подскажите, можно ли этого добиться каким-либо другим способом. Большое спасибо. - person Nabeel Thobani; 12.12.2013
comment
Как насчет ситуации, когда мне нужен LSItemContentTypes, чтобы разрешить импорт файлов этого типа в мое приложение? - person ivan.kavalerov; 30.09.2014