2012-08-07 19 views
2

我最近想要從用戶默認值存儲和檢索NSArrays,並且我發現並使用了Storing custom objects in an NSMutableArray in NSUserDefaults的建議,該建議工作正常。標準Cocoa集合有必要使用NSKeyedArchiver嗎?

但是,回想起來,如果您使用的是標準集合類而不是自定義對象,那麼看起來這太過於誇張了。任何人都可以確認我所使用的解決方案(上面鏈接)的主要優點是您可以以這種方式存儲自定義類,但是對於使用NSArray(其中內容是字符串或其他數組或標準字典)的方法,此方法適用於NSKeyedArchiver是不必要的?

回答

2

是的,看到NSUserDefaults文檔:

setObject:forKey:

值參數可以是唯一的財產清單對象:NSData的,的NSString,NSNumber的,NSDate的,NSArray的,或者NSDictionary的。對於NSArray和NSDictionary對象,其內容必須是屬性列表對象。

你只需要如果你需要你的對象隱蔽到NSData使用一個NSCoderNSKeyedArchiver

+0

在這種情況下,任何自定義類/對象可能確實被轉換爲NSData的,正確的嗎? – johnbakers 2012-08-07 03:54:18

+0

是的,沒錯。 – MattR 2012-08-07 03:56:11

+0

是的,任何實現'NSCoding'協議的自定義對象。 – rickster 2012-08-07 05:40:22