我使用SBJsonParser解析來自服務器的大型json響應I查詢。我希望使用時間戳方法來了解何時需要重新獲取並重新解析所有數據,所以我想知道如何在不需要的時候保存數據請求大的JSON包來刷新我的數據。在iOS中保存JSON對象
我想我應該使用NSCoding協議和歸檔大致如下所示:
// alloc nsdata obj
NSMutableData *data = [[[NSMutableData alloc] init] autorelease];
// create archiver
NSKeyedArchiver *archiver = [[[NSKeyedArchiver alloc] initForWritingWithMutableData:data] autorelease];
// archive whiteboard
[archiver encodeObject:mSaveData forKey:@"Data"];
[archiver finishEncoding];
[data writeToFile:dataPath atomically:YES];
但有一個簡單的方法來編碼這個JSON對象,它是真正NSDictionaries的一個NSArray,或做我必須精心編碼這個對象內的每個字段?
也許有一個更簡單的方法,比如將json對象本身保存爲一個字符串(在用objectWithData方法分析之前),並在每次應用程序加載並想要使用本地副本時重新解析它?
謝謝,但我的理解是,被編碼的對象必須實現NSCoding協議,然後實質上調用encode___方法(在encodeWithCoder:方法中)爲每個保存的數據片段。你是說我可以簡單地使用encodeObject:forKey:方法並傳遞NSArray,或者將archiveArray:toFile:方法中的NSArray作爲根對象傳遞(不需要遍歷每個字段),它將只保存所有數據即使它是一個字典和數組的嵌套數組等? – Joey 2011-04-18 19:50:35
通過NSArray作爲根對象,你應該很好去。當你解碼它時,你會返回數組作爲根對象。 – 2011-04-18 19:52:35
好的。這是因爲NSArray對象本地實現了根據需要的nscoding協議? – Joey 2011-04-18 19:55:01