2012-02-01 1 views
0

Я ищу, чтобы создать класс кэша для новостей, который также можно использовать в других проектах iPhone. Мой менеджер кэша будет поддерживать кеширование данных JSON i.e Текст & Изображение & хранение его локально в iPhone. Основная идея заключается в том, чтобы позволить приложению получать доступ к кэшированным данным, что приводит к снижению активности сети.Хранение и получение кэшированных данных из веб-службы JSON в iPhone?

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

  1. SQLite Database т.е. Извлечение всех данных & хранения

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

  3. Основные данные

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

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 

Что плохого в коде выше ...?

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

Спасибо заранее,

ответ

0

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

0

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

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

+0

, а также есть много библиотек, @ wattson12 упомянул, как RestKit –

1

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

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

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

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

Я надеюсь, что это полезно для и

+0

& Как это об изображениях, Как я пишу/хранить их в ядре Данные ? –

+2

Я не сохраняю изображения в основных данных, а в файловой системе. В основных данных я имею только ссылку на файл. Если вы разрабатываете дисциплину, и каждый раз, когда вы удаляете объект данных ядра, указывающий на файл изображения, который вы удаляете, нет никакой сложной работы. BTW, я не использую исходные имена файлов в каталоге кеша, чтобы избежать дублирования имен. Конечное имя файла - это строка в основном объекте данных. – Gabriel

+0

О, я забыл сказать вам что-то, не используйте каталог Cache по умолчанию, который предлагает iOS для вашего приложения. Вы собираетесь управлять папкой с файлами, поэтому используйте папку «Документы». Кэш-папка предназначена для не-постоянных файлов, и вам нужно, чтобы они были там, где основные объекты данных указывают на них. – Gabriel

Смежные вопросы