OC中如何将对象写入文件中
来源:互联网 发布:网络嗅探器 sniffer 编辑:程序博客网 时间:2024/05/21 19:42
在OC中,将字符串、数组、字典等对象写到文件中去,十分方便。但分为系统类对象和我们手动创建的对象,其详细情况如下:
1)对于系统类对象:
①NSArray:
NSArray *arr = @[@"zhangsan",@"lisi",@"wangwu",@"zhangmazi"]; //创建一个文件路径。 NSString *homePah = [@"~/array.txt" stringByExpandingTildeInPath]; //将数组的内容写入到指定的文件中 [arr writeToFile:homePah atomically:YES]; //将指定的文件中的内容写到数组中 NSArray *resultArray = [[NSArray alloc ]initWithContentsOfFile:@"/users/qingyun/array.txt"]; NSLog(@"%@",resultArray);
②NSDictionary:
//创建一个文件路径 NSString *homepath = [@"~/dicResult.txt" stringByExpandingTildeInPath]; NSDictionary *dic = @{@"zhangsan": @"张三",@"lisi":@"李四",@"wangwu":@"王五"};//初始化一个字典 //将该字典写入直接的文件下 [dic writeToFile:homepath atomically:YES]; NSDictionary *getResult = [[NSDictionary alloc] initWithContentsOfFile:homepath]; NSLog(@"%@",getResult);
③系统类的其他对象也是如此,只是写入文件后的格式不一样。
2)非系统类对象,我们手动创建的对象
对于我们手动创建的对象,不能直接将这些对象内容写到文件中,需要编码、解码然后再序列化、反序列化才能去写到文件中,或从文件中读出来。
比如我们手动创建了一个student类,并初始化
- (id)init { self = [super init]; if (self) { self.name = @"zhangsan"; self.age = 23; self.stuNo = @"410423"; } return self; }
①需要复写编码、解码的方法
编码:
- (void)encodeWithCoder:(NSCoder *)acoder { [acoder encodeObject:self.name forKey:kKeyName]; [acoder encodeInt64:self.age forKey:kKeyAge]; [acoder encodeObject:self.stuNo forKey:kKeyStuNo]; }
解码:
- (id)initWithCoder:(NSCoder *)acoder { self = [super init]; if (self) { self.name = [acoder decodeObjectForKey:kKeyName]; self.age = [acoder decodeInt64ForKey:kKeyAge]; self.stuNo = [acoder decodeObjectForKey:kKeyStuNo]; } return self; }
②序列化、反序列化
Student *stu = [[Student alloc]init];//创建一个stu对象并初始化 //将对象编码、序列化并写到指定路径的文件中去 [NSKeyedArchiver archiveRootObject:stu toFile:@"/Users/qingyun/students.txt"]; //从文件中读取并反序列化、解码成字符串 NSString *strStu = [NSKeyedUnarchiver unarchiveObjectWithFile:@"/Users/qingyun/students.txt"]; NSLog(@"3.%@",strStu);//打印出结果
总结:对于系统类的对象,可以直接将对象写入到指定的文件中去。对于我们手动创建的类对象,需要将对象序列化、反序列化后才能从文件中读取,在序列化、反序列化的过程中,需要先将对象进行编码、解码操作。
(可能有错误,欢迎大家来点评,如转载请说明出处)
0 0
- OC中如何将对象写入文件中
- java 将对象写入到文件中
- IO流-ObjectOutputStream-将对象写入到文件中
- .NET : 如何将大文件写入到数据库中
- 如何将一个文件夹内的文件写入txt中
- C#调试过程中如何将堆栈信息写入文件
- OC字符串写入到.txt文件中
- python将对象写入文件,以及从文件中读取对象
- android将对象写入文件和从文件中读取对象数据
- android 将对象写入SD卡中
- 将DataSet对象中DataTable对象的数据写入XML文件
- 如何将数据写入request参数中
- 将日志文件写入MySqL中
- 将内容写入到文件中
- 将字符串写入到txt文件中
- 将数组写入Plist文件中
- 将数据写入.txt文件中
- 将列表内容写入文件中
- html中<select>标签添加onclick()事件的正确写法
- hdu2196 Computer(求树的直径)
- HEVC学习之琐事(四):如何计算PSNR
- Access restriction: The XXXXXXX is not accessible 错误
- Linux进程基本知识
- OC中如何将对象写入文件中
- 博客搬家咯,欢迎大家访问www.2spider.com
- Codeforces Round #245 (Div. 2)D(树的性质+状压+dfs)
- 推荐一本适合自学的小波分析教材
- proto buffer学习
- 立体视觉图像对,获取与保存
- Python-Web运行环境搭建中遇到的问题-(ImportError: No module named setuptools)
- gradle插件装不了,eclipse market被墙了
- 黑马程序员----Java String的使用