扫码关注官方订阅号
我想把一个包含自定义的对象的数组写到磁盘 如: User *user1 = [User alloc] init]; User *user2 = [User alloc] init]; NSArray *userArr = @[user1,user2];
该怎么做?
认证高级PHP讲师
你的自定义对象实现NSCoding协议,然后在.m里面实现下面两个方法
-(instancetype)initWithCoder:(NSCoder *)aDecoder{ self = [super init]; if (self) { self.objectID = [aDecoder decodeObjectForKey:@"objectID"]; self.createdAt = [aDecoder decodeObjectForKey:@"createdAt"]; self.updatedAt = [aDecoder decodeObjectForKey:@"updatedAt"]; } return self; } -(void)encodeWithCoder:(NSCoder *)aCoder{ [aCoder encodeObject:self.objectID forKey:@"objectID"]; [aCoder encodeObject:self.createdAt forKey:@"createdAt"]; [aCoder encodeObject:self.updatedAt forKey:@"updatedAt"]; }
再然后用那个NSKeyedArchiver就可以了
NSData * tempArchive = [NSKeyedArchiver archivedDataWithRootObject:userArr]; NSArray *arr = [NSKeyedUnarchiver unarchiveObjectWithData:tempArchive];
楼主可以看下 mantle 可以优雅的解决序列化的问题
自定义对象需要实现NSCoding协议
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
你的自定义对象实现NSCoding协议,然后在.m里面实现下面两个方法
再然后用那个NSKeyedArchiver就可以了
楼主可以看下 mantle 可以优雅的解决序列化的问题
自定义对象需要实现NSCoding协议