Хранить и извлекать кэшированные данные из веб-сервиса JSON в iPhone? - PullRequest
0 голосов
/ 01 февраля 2012

Я хочу создать класс Cache Manager для новостей , который также можно использовать в других проектах iPhone.Мой менеджер кеша будет поддерживать кеширование данных JSON, т.е. Text & Image и локальное его хранение в iPhone.Основная идея заключается в том, чтобы предоставить приложению доступ к кэшированным данным, что приведет к снижению сетевой активности.

Я думаю, что эта вещь будет реализована следующими способами:

  1. База данных Sqlite, т.е. выборка всех данных и сохранение

  2. Добавление этих данных в некоторый файл .plist

  3. Core-Data

Я пытался использовать этот код для второго решения:

NSString *plistPath = [self Return_PlistPathCreation]; // Method to creat the JSON file locaally under Documents

    NSMutableDictionary *dict = [[NSMutableDictionary alloc]init];
    [dict setValue:newsArray forKey:@"homenews"]; //newsArray is the array containing objects parsed from the JSON webservice 
     NSLog(@"JSON representation for dictionary is %@",[dict JSONRepresentation]); //it prints perfectly

    [[dict JSONRepresentation] writeToFile:plistPath atomically:YES encoding:NSASCIIStringEncoding error:nil]; //Not not able to write it within the file 

Что не так с приведенным выше кодом ...?

Итак, можноКто-нибудь подскажет мне , какой из них будет лучшим способом хранения кэшированных данных с точки зрения производительности и быстродействия приложения?Хотя я открыт для новых идей, есть ли другие способы, кроме указанных выше?

Заранее спасибо,

Ответы [ 3 ]

1 голос
/ 01 февраля 2012

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

  1. Определите базу данных и Core-Dataдоступ к управляемым объектам для контента, который вы собираетесь загрузить.Эта база данных является не только кешем, но и основными данными вашего приложения.

  2. Создайте свое приложение на основе этой базы данных базовых данных и получите доступ к данным во всех ваших контроллерах viewController, которые вы используете.можно через UIFetchedResultsController.Реализуйте простое обновление представлений на основе методов делегатов fetchedViewController.

  3. Создание фоновых функций, независимых от остальной части приложения, которые загружают содержимое из Интернета и сохраняют его в Core-Data,Представления обновятся автоматически без каких-либо дополнительных усилий со стороны разработчика.

Надеюсь, это будет полезно для вас

0 голосов
/ 01 февраля 2012

Как я узнал из Standford Uni.Видео лекции CS193p, вы почти никогда не должны использовать SQLite в своих приложениях.Базовые данные немного сложны, но если ваши данные имеют сложный график, будет лучше.Я думаю, что использование списка свойств (plist) будет лучше:)

Примечание: я использовал NSUserDefaults для сохранения данных JSON и использования в других классах позже, также есть методы кэширования в этой ссылке.

0 голосов
/ 01 февраля 2012

Вместо того, чтобы строить это самостоятельно, потому что это очень сложная проблема, почему бы просто не использовать что-то вроде RestKit?

...