如图,一个自定义的类Car里面包含了4个自定义类,那4个自定义类已经实现了NSCoding协议了,现在到Car这个类就不会写了,求教要怎么做
-(id)initWithCoder:(NSCoder *)aDecoder
{
if (self = [super init]) {
self.brand = [aDecoder decodeObjectForKey:@"brand"];
self.series = [aDecoder decodeObjectForKey:@"series"];
self.year = [aDecoder decodeObjectForKey:@"year"];
self.model = [aDecoder decodeObjectForKey:@"model"];
}
return self;
}
-(void)encodeWithCoder:(NSCoder *)aCoder
{
[aCoder encodeObject:self.brand forKey:@"brand"];
[aCoder encodeObject:self.series forKey:@"series"];
[aCoder encodeObject:self.year forKey:@"year"];
[aCoder encodeObject:self.buttonArray forKey:@"model"];
}
只要那4个类都实现了NSCoding接口即可,它就会递归调用,也就是说,[aDecoder decodeObjectForKey:@"brand"] 会调Car_brand的-(id)initWithCoder:(NSCoder *)aDecoder。
顺便说一下,iOS 里的类名是驼峰命名的,最好不要加下划线。比如Car_brand改成CarBrand较好。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。