Я разрабатываю приложение, которое позволяет пользователю записывать видео и фотографии. Теперь мне интересно, что лучше всего их хранить?Сохранение фотографий и видео в Core Data?
Первая идея состоит в том, чтобы сохранить ее в библиотеке фотографий пользователя, точно так же, как если бы он записал фотографию из приложения «Камера» и использовал ссылку на файлы. Теперь проблема в том, что пользователь может получать и удалять файлы из приложения «Фотографии», которое может понадобиться моему приложению. Я не думаю, что я могу помешать пользователю удалять фотографии, но как я могу справиться с непоследовательностью, от которой пострадает мое приложение?
Другой способ - позаботиться о себе. Мое приложение уже использует Core Data, поэтому я могу преобразовать медиафайлы с помощью NSValueTransformer
в объект NSData
и сохранить его как BLOB в Core Data. Затем есть еще несколько вопросов относительно производительности. Я знаю, что базовые данные на основе SQLite могут отлично обрабатывать базы данных размером в несколько ГБ, но загрузка больших объектов данных займет какое-то время. Очевидным преимуществом является то, что пользователь не собирается делать свое приложение непоследовательным, но допустимо ли ограничение производительности? И больше всего: если я использую UIImagePickerController
для захвата фотографий и видео, он все равно сохранит его в библиотеке. Чтобы сохранить его в Core Data, мне нужно было бы сделать снимок, преобразовать его в объект NSData
, сохранить его и снова удалить из библиотеки. Кажется, это не правильный путь для меня. Кроме того, UIKit предоставляет мне функцию для получения объекта NSData
с фотографии через UIImageJPEGRepresentation()
, но, похоже, такой функции для конвертирования видео не существует.
В целом, из-за всех оставшихся без ответа вопросов, я хотел бы использовать первый подход. Но проблема несогласованности меня озадачивает. Какова наилучшая практика для решения этой проблемы?
См. Мой ответ в: http://stackoverflow.com/questions/10222632/can-i-access-the-files-used-for-external-binary-storage-in-core-data/13497992#13497992 I придумал «креативное» решение (лучше ли это использовать любую идею), но это позволит вам использовать Core Data для управления вашими файлами, сохраняя при этом доступ к файлам ** REAL ** по их пути. –