对象 文件的读写

来源:互联网 发布:人工智能的坏处 编辑:程序博客网 时间:2024/05/21 06:39

//自定义对象需要 协议 < NSCoding >
并实现

/** *  当一个对象要归档进沙盒中时,就会调用这个方法 *  目的:在这个方法中说明这个对象的哪些属性要存进沙盒 */- (void)encodeWithCoder:(NSCoder *)encoder/** *  当从沙盒中解档一个对象时(从沙盒中加载一个对象时),就会调用这个方法 *  目的:在这个方法中说明沙盒中的属性该怎么解析(需要取出哪些属性) */- (id)initWithCoder:(NSCoder *)decoder

// 自定义对象的存储必须用NSKeyedArchiver 和NSKeyedUnarchiver

//写入文件  NSKeyedArchiver+ (BOOL)archiveRootObject:(id)rootObject toFile:(NSString *)path;//从文件中读取  NSKeyedUnarchiver+ (id)unarchiveObjectWithFile:(NSString *)path;

例子

/** *  当一个对象要归档进沙盒中时,就会调用这个方法 *  目的:在这个方法中说明这个对象的哪些属性要存进沙盒 */- (void)encodeWithCoder:(NSCoder *)encoder{    [encoder encodeObject:self.access_token forKey:@"access_token"];    [encoder encodeObject:self.expires_in forKey:@"expires_in"];    [encoder encodeObject:self.uid forKey:@"uid"];    [encoder encodeObject:self.created_time forKey:@"created_time"];    [encoder encodeObject:self.name forKey:@"name"];}/** *  当从沙盒中解档一个对象时(从沙盒中加载一个对象时),就会调用这个方法 *  目的:在这个方法中说明沙盒中的属性该怎么解析(需要取出哪些属性) */- (id)initWithCoder:(NSCoder *)decoder{    if (self = [super init]) {        self.access_token = [decoder decodeObjectForKey:@"access_token"];        self.expires_in = [decoder decodeObjectForKey:@"expires_in"];        self.uid = [decoder decodeObjectForKey:@"uid"];        self.created_time = [decoder decodeObjectForKey:@"created_time"];        self.name = [decoder decodeObjectForKey:@"name"];    }    return self;}
/** *  存储账号信息 * *  @param account 账号模型 */+ (void)saveAccount:(HWAccount *)account{    // 自定义对象的存储必须用NSKeyedArchiver,不再有什么writeToFile方法    [NSKeyedArchiver archiveRootObject:account toFile:HWAccountPath];}/** *  返回账号信息 * *  @return 账号模型 */+ (HWAccount *)account{    return [NSKeyedUnarchiver unarchiveObjectWithFile:HWAccountPath];;}
0 0
原创粉丝点击