ios如何把一个包含自定义对象的数组序列化到磁盘?

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

该怎么做?

阅读 8k
4 个回答

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题