Храните Large Array со строками и изображениями в Swift
Привет я пытаюсь сохранить массив, заполненный объектами, чтобы он не исчез, если приложение полностью закрыто.
Проблема: если я использую данные ядра и преобразовываю массив в NSData, тогда он работает. Но приложение зависает во время обработки массива. Я также попытался преобразовать тип данных, но я не могу заставить его работать. И я не могу использовать NSUserdefaults, потому что он не поддерживает изображения.
У кого-нибудь есть идеи, как я мог бы решить это. Я новичок в программировании, так что это может быть совершенно неправильный подход.
2 ответа
Сначала сохраните изображения в отдельных файлах с уникальными именами файлов в каталоге изображений в каталоге документов. Поместите уникальные имена файлов в массив, а не изображения.
Затем, в зависимости от ваших потребностей, либо сохраните индивидуальную информацию для каждого изображения в Базовых данных, если требуется быстрый произвольный доступ. Или сохраните массив в файл.
Для 1500 строк по ~100 символов каждое сохранение в одном файле, вероятно, подойдет, я бы начал с него и перешел бы к Core Data, только если есть проблема с производительностью, которую Core Data решит.
Как говорит Кен Бек: "Делай самое простое, что могло бы сработать". Я не верю, что наличие 750 изображений в массиве действительно сработало бы, если бы они имели какой-либо существенный размер.
Не использовать NSUserDefaults
,
Базовые данные излишни для простого сохранения массива на диск.
Какие объекты вы сохраняете?
Если у вас уже есть логика для преобразования массива в NSData, почему бы просто не сохранить файл в каталог документов или в каталог кэшей (кэширует, если его можно восстановить, если он очищен, документы, если он уникален и содержит информацию о состоянии пользователя.)
Редактировать:
Заф поднимает некоторые хорошие вопросы в своем вопросе. Насколько велик этот массив (количество элементов и общий размер данных). Разумно ли загружать все это в память?
Если вы ищете способ произвольного доступа для загрузки по одному элементу за раз, тогда база данных может быть разумной.
Конкретное решение зависит от особенностей вашей проблемы, поэтому нам нужно больше информации.