Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c encodeWithCoder什么时候被调用?_Objective C_Cocoa Touch_Xcode_Nscoder - Fatal编程技术网

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"];
}