Как сохранить дополнительный контент в пакеты файлов UIManagedDocument?
-
27-10-2019 - |
Вопрос
У меня большие проблемы с расшифровкой документации 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.Моя бровь не могла быть приподнята более, чем сейчас, как у Спока.