扫码关注官方订阅号
如图,一个自定义的类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。
NSCoding
[aDecoder decodeObjectForKey:@"brand"]
Car_brand
-(id)initWithCoder:(NSCoder *)aDecoder
顺便说一下,iOS 里的类名是驼峰命名的,最好不要加下划线。比如Car_brand改成CarBrand较好。
CarBrand
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
一样的原理:
只要那4个类都实现了
NSCoding接口即可,它就会递归调用,也就是说,[aDecoder decodeObjectForKey:@"brand"]会调Car_brand的-(id)initWithCoder:(NSCoder *)aDecoder。顺便说一下,iOS 里的类名是驼峰命名的,最好不要加下划线。比如
Car_brand改成CarBrand较好。