2012-09-27 20 views
0

想象一下,您正在不斷從服務器讀取json數據。比方說,你正在獲取天氣數據。我想從現在開始只顯示2小時的數據。無論何時用戶點擊播放按鈕,它都會在地圖上顯示天氣數據。
我該如何保存json數據,然後在地圖上顯示它。因爲這會增強我的應用程序,而不是連接服務器,獲取數據並同時顯示它。請給我建議。我是否需要先將它保存爲plist或數組?我在模擬之前應該在哪裏保存這些數據?首先加載JSON數據,然後模擬 - iOS

回答

1

將它存儲在文件目錄中的plist中是保存數據供以後參考的好方法。如果要保存JSON字符串,也可以選擇NSUSerDefaults ..(最好如果字符串不是太大)

保存到PList ..

NSURL *url = [NSURL URLWithString:serverPath]; 
    NSData *urlData = [NSData dataWithContentsOfURL:url]; 
    if (urlData) 
    { 
     NSArray  *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 

     NSString *documentsDirectory = [paths objectAtIndex:0]; 

     NSString *filePath = [NSString stringWithFormat:@"%@/myplist.plist", documentsDirectory]; 

     [urlData writeToFile:filePath atomically:YES]; 
    } 

和檢索它..

NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES); 

NSString *documentsDirectory = [paths objectAtIndex:0]; 

NSString *filePath = [documentsDirectory stringByAppendingPathComponent: 
         [NSString stringWithFormat: @"%@/myplist.plist",documentsDirectory ] ]; 

NSData *retrievedData = [NSData dataWithContentsOfFile:filePath]; 
+0

非常感謝。實際上,字符串會很大。我怎麼能更新我的plist。我應該刪除並重新創建嗎?這是推薦?你知道有哪些文件可以幫助我弄清楚。? – casillas

+1

檢查我更新的答案.. – AppleDelegate

+0

非常感謝!您認爲將數據保存在臨時plist中將是最佳解決方案,對嗎?因爲我想避免連接到服務器,所以只要用戶請求連接,我想給加載時間來寫數據給plist,並從plist讀取我的數據。否則用戶可能會認爲應用程序運行緩慢。 – casillas