个人笔记
就是懒,不想每次有新数据添加的时候,都要进行归档解档操作
//归档
- (void)encodeWithCoder:(NSCoder*)coder{
unsignedintcount =0;
//使用class_copyIvarList 获取到 UserInfo 类里面的属性,(.h文件和.m文件里面的都能得到)
Ivar* ivars =class_copyIvarList([UserInfo class], &count);
//遍历数量
for(inti =0; i < count; i++) {
//取出对应的Ivar
Ivarivar = ivars[i];
//拿到名称
constchar* name =ivar_getName(ivar);
//OC字符串
NSString* key = [NSStringstringWithUTF8String:name];
//归档
[coderencodeObject:[selfvalueForKey:key]forKey:key];}}
//解档 跟上面的是一个意思
- (instancetype)initWithCoder:(NSCoder*)coder
{
if(self= [superinit]) {
//属性的个数
unsignedintcount =0;
Ivar* ivars =class_copyIvarList([UserInfoclass], &count);
for(inti =0; i < count; i++) {
//取出对应的Ivar
Ivarivar = ivars[i];
//拿到名称
constchar* name =ivar_getName(ivar);
//OC字符串
NSString* key = [NSString stringWithUTF8String:name];
//解档
idvalue = [coder decodeObjectForKey:key];
//KVC--设置值到属性上面!!!
[self setValue:value forKey:key];
}}
returnself;
}
/**
*保存用户信息
*/
-(void)saveUserInfo
{
//沙盒
NSString* temp =NSTemporaryDirectory();
NSString* filePath = [temp stringByAppendingPathComponent:@"userInfo.yt"];
//归档
[NSKeyedArchiver archiveRootObject:self toFile:filePath];
}
//至于用户退出 清空数据 同样是遍历 只不过将value设置为空就好了
网友评论