ios如何把一个包含自定义对象的数组序列化到磁盘?
PHP中文网
PHP中文网 2017-04-17 14:45:24
[iOS讨论组]

我想把一个包含自定义的对象的数组写到磁盘
如:
User *user1 = [User alloc] init];
User *user2 = [User alloc] init];
NSArray *userArr = @[user1,user2];

该怎么做?

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(4)
PHPz

你的自定义对象实现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协议

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号