Кэширование данных Objective C на iOS
Я извлекаю данные из API, а затем строю свои объекты данных с ним. Я хочу кэшировать эти данные в будущем. Я сохраняю строку из api в NSUserDefaults и затем повторно обрабатываю ее каждый раз, когда приложение загружается. Это работает, но на самом деле это кажется неправильным способом.
Как я могу это сделать?
Ответы
Ответ 1
Существует множество различных решений этой проблемы, и нет "правильного" способа сделать это. Несколько популярных опций:
- Основные данные - Ядровая основа для настойчивости. Очень результативна, но сложнее.
- SQLite - Быстрые и гибкие, но голые кости.
- Plists - В основном записывая файл на диск, вы должны читать и писать вручную.
- NSUserDefaults - Самый легкий вес "ключ-значение".
Я бы посоветовал вам прочитать все четыре и посмотреть, какой из них лучше всего подходит для вас.
Ответ 2
Вы заметили NSCache?
Объект NSCache
- это изменяемая коллекция, в которой хранятся пары ключ-значение, похожие на объект NSDictionary
. Класс NSCache
предоставляет программный интерфейс для добавления и удаления объектов и установки политик выселения на основе общей стоимости и количества объектов в кеше...
Ответ 3
Лично я очень люблю классы EGOCache, я использую их довольно много в своих проектах:
https://github.com/enormego/EGOCache
Классы просты в использовании, у меня были собственные классы с похожим дизайном, но они более округлые, поэтому я решил придерживаться их (не пытайтесь изобретать колесо).
Ответ 4
Я голосую Основные данные
Ответ 5
Какой тип данных? Если его текстовые/строковые базы SQLLite, вероятно, будут лучшими.
Ответ 6
Я бы хранил вычисляемые/проанализированные данные в хранилище основных данных или в плоских файлах NSData в каталоге приложений. Вы правы, что сохранение этого в NSUserDefaults, а затем re parsing чувствует себя немного переполненным.