Прежде всего это зависит от того, где изначально хранятся данные.Будет ли ваше приложение рецептов самосогласованным, то есть будет ли оно содержать все квитанции, включенные в приложение, или оно будет загружать их из сети на основе взаимодействия с пользователем?(например, поиск региональных квитанций или сезонных квитанций и т. д.).
ЧАСТИ ИЗ СЕТИ (ОНЛАЙН-ПРИЛОЖЕНИЕ)
В таком случае вы будете скачивать квитанции из сети по запросу.Лучший способ их хранения - динамически оставлять их в памяти во время работы приложения (кэш памяти).Вы очистите кэш памяти, как только появится небольшое давление памяти.Загрузка квитанций будет ленивой, так как если квитанция находится в кеше памяти, она будет извлечена из нее, в случае отсутствия (потому что никогда не загружалась и не удалялась), она будет снова извлечена из сети.Значительное улучшение может быть достигнуто путем настройки сетевого кэша на диске (с использованием стандартной системы кэширования Cocoa или некоторой инфраструктуры с открытым исходным кодом, такой как MKNetworkKit или ASIHTTPRequest).В этом случае квитанция будет извлечена в следующем порядке: кэш памяти, дисковый кеш, сеть.Затем приложение будет работать в автономном режиме (только для чеков, которые уже были загружены), и вам никогда не придется беспокоиться о хранении чеков, так как об этом позаботится дисковый кеш.
ЗАПИСАННЫЕ ЧЕТКИ
Обычно график памяти чеков может быть немного сложнее, чем простой «массив» чеков.Вы можете иметь таблицу квитанций («сущность»), таблицу ингредиентов, таблицу ресторанов, если вы связываете эту квитанцию с ресторанами, которые ее предлагают, таблицу фотографий и так далее.В таком случае сложность графа объекта такова, что CoreData является лучшим решением.Вы не будете заботиться о постоянном хранилище (обычно SQLite и управляется средой CoreData).Может потребоваться предварительная загрузка хранилища CoreData при запуске, это можно сделать с помощью «dev-приложения», которое считывает исходный источник данных (xml, json, csv), создает управляемые объекты и сохраняет их в хранилище CoreData.,Затем вы получите полученный файл и сохраните его в своем комплекте.Может возникнуть дополнительная сложность, если вы хотите поддерживать свое приложение в актуальном состоянии с новыми квитанциями, полученными из сети, без выпуска обновления приложения каждый раз.В этом случае наилучшим вариантом будет: - поместить хранилище CoreData в комплект приложения - при первом запуске скопировать его в область изолированных документов приложения (или в библиотеку / кеши приложений, если вы не хотите добавлять дополнительное пространство для резервных копий впользователь, затем защитите эту область от автоматической очистки кэша ОС) - каждый раз, когда ваше приложение получает новые поступления из сети (автоматически или из покупки в приложении), анализирует полученные данные (xml, json, csv, ...) и сохраняет их вхранилище CoreData.
ПРИМЕЧАНИЕ
Это предположение не из догадок, а из реального опыта.Я разработал несколько приложений для чеков, особенно онлайн.