2011-06-09 68 views
0

我有一個對象,我已經存儲了所有來自twitter的信息,但我需要給它一個加載狀態,所以它需要被保存到內存。NSKeyedUnArchiver回到您原來的自定義NSObject

這是代碼我這樣做遠遠低於

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 

    rssParser = [[RssParser alloc] loadXMLbyURL:@"http://twitter.com/statuses/user_timeline/2smssupport.xml"]; 

    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:rssParser]; 
    [prefs setObject:data forKey:@"Tweets"]; 
    [prefs synchronize]; 

    NSData *olddata = [prefs dataForKey:@"Tweets"];  

我需要的舊數據恢復到原來的形式作爲「RssParser」

如果任何人都可以幫忙這將是王牌!它在最後一天左右蹂躪着我的大腦!

回答

0

RssParser是否實現NSCoding?如果是的話,你只需要做

NSData *olddata = [prefs dataForKey:@"Tweets"]; 
RssParser *oldRssParser = (RssParser *)[NSKeyedUnarchiver unarchiveObjectWithData:olddata]; 

否則,你應該閱讀http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Archiving/Archiving.html%23//apple_ref/doc/uid/10000047-SW1

+0

感謝偉大的!是的,它實現了編碼。你能否向我解釋爲什麼使用第一個括號? – MrPink 2011-06-09 10:20:35

+0

好吧,基本上NSKeyedUnarchiver只知道它會返回某種對象,而不是什麼類型的對象。使用(RssParser *),你基本上告訴編譯器返回的對象將是一個RssParser對象,即你將該對象轉換爲一個RssParser對象 – Sascha 2011-06-09 22:29:37