2012-02-01 45 views
0

我期待創建一個緩存管理器類的新聞它可以用於其他iPhone項目也。我的緩存管理器將支持緩存JSON數據,例如文本&圖片 &本地存儲在iPhone中。這背後的主要思想是使應用程序能夠訪問緩存的數據,從而減少網絡活動。在iPhone中存儲和獲取來自JSON webservice的緩存數據?

我想有在以下方面這個東西實現:

  1. SQLite數據庫即抓取所有的數據存儲&

  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

正如我從斯坦福大學瞭解到的。 CS193p視頻講座幾乎從不在應用程序中使用SQLite。核心數據有點複雜,但是如果你的數據有一個複雜的圖形將會變成怪物。我認爲使用屬性列表(plist)會更好:)

注意:我使用NSUserDefaults來保存JSON數據並在稍後的不同類中使用,在this鏈接中也有緩存方法。

+0

,也有很多庫,如@ wattson12提到,像RestKit – 2012-02-01 10:06:45

1

最好的,更強大和最容易實現的解決方案是第三個,Core-Data。

  1. 定義數據的基礎和核心數據訪問與管理對象:如果你想獲得最通用的應用程序在未來的新功能開發方面,我的意見,我到設在這個建築模式設計您的應用程序您要下載的內容。這個數據庫不僅是緩存,而且是您應用的主要數據。

  2. 通過UIFetchedResultsController在您的所有viewController中構建基於該核心數據數據庫和數據訪問的應用程序。實現基於fetchedViewController委託方法的簡單刷新視圖。

  3. 構建後臺功能,獨立於應用程序的其餘部分,從互聯網上下載內容並將它們存儲在Core-Data中。視圖將自動刷新,而不需要您作爲開發人員更多努力。

我希望這是ü

+0

及如何是關於圖像,我怎樣寫/它們存儲在覈心有用數據? – 2012-02-01 10:26:59

+2

我不保存核心數據中的圖像,而是保存在文件系統中。在覈心數據中,我只有對文件的引用。如果您遵循紀律進行開發,並且每次刪除指向映像文件的核心數據對象,都會刪除該文件,但是沒有任何複雜的工作要做。順便說一句,我不使用緩存目錄中的文件的原始名稱,以避免重複的名稱。最終的文件名是核心數據對象中的一個字符串。 – Gabriel 2012-02-01 10:40:31

+0

哦,我忘了告訴你一些東西,不要使用iOS爲你的應用程序提供的默認緩存目錄。你將要管理文件夾,所以使用Documents文件夾。緩存文件夾用於非永久文件,只要核心數據對象指向它們,您就需要它們在那裏。 – Gabriel 2012-02-01 10:43:02