Objective c encodeWithCoder什么时候被调用?
这将保存一个数组(我认为)Objective c encodeWithCoder什么时候被调用?,objective-c,cocoa-touch,xcode,nscoder,Objective C,Cocoa Touch,Xcode,Nscoder,这将保存一个数组(我认为) 当我想保存数组时,我必须直接调用此方法还是必须执行其他操作?您不能直接调用此方法。如果需要序列化该对象,则由NSCoder子类调用。如果要对对象图进行编码,请使用NSKeyedArchiver的类方法archivedDataWithRootObject:或archiveRootObject:toFile:。这将依次调用对象的encodeWithCoder:方法。还要注意,数组中的每个对象都必须实现NSCoding协议。不要忘记调用super:-(void)encode
当我想保存数组时,我必须直接调用此方法还是必须执行其他操作?您不能直接调用此方法。如果需要序列化该对象,则由
NSCoder
子类调用。如果要对对象图进行编码,请使用NSKeyedArchiver
的类方法archivedDataWithRootObject:
或archiveRootObject:toFile:
。这将依次调用对象的encodeWithCoder:
方法。还要注意,数组中的每个对象都必须实现NSCoding
协议。不要忘记调用super:-(void)encodeWithCoder:(NSCoder*)编码器{[super encodeWithCoder:coder];[encoder encoder-encodeObject:myArray-forKey:@“myArray”;}我正在使用RMMapper库设置UserDefaults中的值。库使用NSData*encodedObject=[NSKeyedArchiver archivedDataWithRootObject:obj];对对象进行编码,但仍不调用此方法。我在这个问题上纠缠了很久。你能帮我吗?
- (void)encodeWithCoder:(NSCoder *)encoder {
[encoder encodeObject:myArray forKey:@"myArray"];
}