我在我的OS X應用程序中實現了對Lion的「簡歷」功能的支持。NSKeyedArchiver:區分同一類的不同實例
我有NSViewController的一個自定義的子類,其中我實現的方法 encodeRestorableStateWithCoder:如:
@implementation MyClass (Restoration)
-(void)encodeRestorableStateWithCoder:(NSCoder*)coder {
[coder encodeObject:_dataMember forKey:@"object_key"]; // I get the warning below when this line is executed for the second time
}
- (void)restoreStateWithCoder:(NSCoder *)coder {
_dataMember = [coder decodeObjectForKey:@"object_key"];
}
@end
但是,由於我的MyClass多個實例,不同的值被保存到相同的鍵(「object_key 「),我得到可可以下警告:
的NSKeyedArchiver警告:替換現有的價值關鍵 ‘object_key’;在類層次結構中可能出現重複編碼鍵
解決此問題的最佳做法是什麼?
編輯:我發現here每個實例自動擁有自己的命名空間,以避免衝突,所以這個問題可能是我手動調用encodeRestorableStateWithCoder具有相同NSCoder對象的不同實例的方式,而不告訴它,這些是不同的例子。但是,我仍然無法弄清楚如何正確地做到這一點。
在此先感謝!
但是,這不會對編碼'NSViewController'情況下,將它的工作? – adib 2013-02-13 01:31:10
我認爲它應該適用於'NSViewController',爲什麼不呢? – 2013-02-13 08:30:58
@benuri [這是爲什麼](http://stackoverflow.com/questions/14844966/encoding-nsviewcontroller-for-lions-user-interface-resume-feature)。 – adib 2013-02-13 22:31:25