首页 > 代码库 > iOS开发——保存自定义对象数组、字典到文件
iOS开发——保存自定义对象数组、字典到文件
在ios中,要保存普通的数组到文件可以直接调用-wirteToFile:atomically:方法写入,并且可以通过NSArray的方法-initWithContentOfFile:来读文件初始化数组。然而,当要保存的数组中存储的数据对象是自定义对象时,就得通过对象归档的方法来实现了,具体来说
一、自定义对象实现归档协议,并实现方法- (id)initWithCoder:和方法- (void)encodeWithCoder:
@interface CourseModel : CYZBaseModel <NSCoding>
- (id)initWithCoder:(NSCoder *)aDecoder { self = [super init]; if (self) { self.courseName = [aDecoder decodeObjectForKey:@"courseName"]; self.courseTeacher = [aDecoder decodeObjectForKey:@"courseTeacher"]; self.courseTime = [aDecoder decodeObjectForKey:@"courseTime"]; self.courseLocation = [aDecoder decodeObjectForKey:@"courseLocation"]; self.shouldUseTip = [aDecoder decodeBoolForKey:@"shouldUseTip"]; self.row = [aDecoder decodeIntegerForKey:@"row"]; self.section = [aDecoder decodeIntegerForKey:@"section"]; } return self; } - (void)encodeWithCoder:(NSCoder *)aCoder { [aCoder encodeObject:self.courseName forKey:@"courseName"]; [aCoder encodeObject:self.courseTeacher forKey:@"courseTeacher"]; [aCoder encodeObject:self.courseTime forKey:@"courseTime"]; [aCoder encodeObject:self.courseLocation forKey:@"courseLocation"]; [aCoder encodeBool:self.shouldUseTip forKey:@"shouldUseTip"]; [aCoder encodeInteger:self.row forKey:@"row"]; [aCoder encodeInteger:self.section forKey:@"section"]; }
二、获得保存文件的路径
- (NSString *)filePath { return [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"course.plist"]; }
三、调用NSKeyedArchived类的类方法:- (void)archiveRootObject:toFile:写入文件
NSString *path = [self filePath]; [NSKeyedArchiver archiveRootObject:self.allCourses toFile:path];
四、调用NSKeyedUnarchiver类的类方法:- (id)unarchiveObjectWithFile:读文件
NSString *path = [self filePath]; self.allCourses = [NSKeyedUnarchiver unarchiveObjectWithFile:path]; if (self.allCourses == nil) { self.allCourses = [NSMutableArray array]; }
iOS开发——保存自定义对象数组、字典到文件
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。