Подтвердить что ты не робот

Кэширование данных Objective C на iOS

Я извлекаю данные из API, а затем строю свои объекты данных с ним. Я хочу кэшировать эти данные в будущем. Я сохраняю строку из api в NSUserDefaults и затем повторно обрабатываю ее каждый раз, когда приложение загружается. Это работает, но на самом деле это кажется неправильным способом.

Как я могу это сделать?

4b9b3361

Ответ 1

Существует множество различных решений этой проблемы, и нет "правильного" способа сделать это. Несколько популярных опций:

  • Основные данные - Ядровая основа для настойчивости. Очень результативна, но сложнее.
  • SQLite - Быстрые и гибкие, но голые кости.
  • Plists - В основном записывая файл на диск, вы должны читать и писать вручную.
  • NSUserDefaults - Самый легкий вес "ключ-значение".

Я бы посоветовал вам прочитать все четыре и посмотреть, какой из них лучше всего подходит для вас.

Ответ 2

Вы заметили NSCache?

Объект NSCache - это изменяемая коллекция, в которой хранятся пары ключ-значение, похожие на объект NSDictionary. Класс NSCache предоставляет программный интерфейс для добавления и удаления объектов и установки политик выселения на основе общей стоимости и количества объектов в кеше...

Ответ 3

Лично я очень люблю классы EGOCache, я использую их довольно много в своих проектах:

https://github.com/enormego/EGOCache

Классы просты в использовании, у меня были собственные классы с похожим дизайном, но они более округлые, поэтому я решил придерживаться их (не пытайтесь изобретать колесо).

Ответ 5

Какой тип данных? Если его текстовые/строковые базы SQLLite, вероятно, будут лучшими.

Ответ 6

Я бы хранил вычисляемые/проанализированные данные в хранилище основных данных или в плоских файлах NSData в каталоге приложений. Вы правы, что сохранение этого в NSUserDefaults, а затем re parsing чувствует себя немного переполненным.