Как сохранить дополнительный контент в пакеты файлов UIManagedDocument?

StackOverflow https://stackoverflow.com/questions/8351948

Вопрос

У меня большие проблемы с расшифровкой документации Apple вокругUIManagedDocument , а именно следующие методы:

  • - (id)additionalContentForURL:(NSURL *)absoluteURL error:(NSError **)error
  • - (BOOL)readAdditionalContentFromURL:(NSURL *)absoluteURL error:(NSError **)error
  • - (BOOL)writeAdditionalContent:(id)content toURL:(NSURL *)absoluteURL originalContentsURL:(NSURL *)absoluteOriginalContentsURL error:(NSError **)error

Удалось ли кому-нибудь сохранить дополнительный контент в каталог «дополнительного контента» внутри своих пакетов UIManagedDocument?Я хочу сохранить прямые изображения (PNG, JPEG и т. Д.) И видео (m4v и т. Д.) В этом каталоге, используя UUID в качестве имен файлов (с правильным расширением файла) и сохраняя ссылки на эти отдельные файлы как пути к файлам с общим кодом кода вмой постоянный магазин.

Это было полезно?

Решение

Благодарим Apple DTS за то, что они помогли мне понять этот класс.Я поделюсь некоторыми из примеров, с которыми они мне помогли (немного изменены).

Хорошо, в основном это работает так: подкласс UIManagedDocument и реализация следующих методов (где свойство extraInfo - это просто NSDictionary, реализованный в нашем подклассе):

родовое слово

UIManagedDocument будет вызывать эти методы, когда это необходимо, автоматически сохраняя все, что вам нужно сохранить, в пакет документов внутри каталога AdditionalContent.

Если вам нужно принудительно сохранить сохранение, просто вызовите в своем экземпляре UIManagedDocument следующую команду:

родовое слово

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

Другие советы

Документация для -additionalContentForURL: error: указывает, что возвращение nil должно сигнализировать об ошибке.

родовое слово

Я переопределяю -writeContents:andAttributes:safelyToURL:forSaveOperation:error: для другой цели (выполнение некоторых действий при первом сохранении нового документа), а вызов super вызывает богов NSException, потому что значение contents равно нулю, а не NSDictionary, как, по-видимому, ожидает UIManagedDocument.Хм.

Чем больше вы знаете ...

P.S.Я предполагаю, что это зависит от времени суток с -writeContents: andAttributes: ... Однажды он выдал исключение с жалобой на ожидание NSDictionary, но позже выдал исключение, жалуясь, что я не передал ему NSData.Моя бровь не могла быть приподнята более, чем сейчас, как у Спока.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top