基于文件的存储
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了基于文件的存储,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1883字,纯文字阅读大概需要3分钟。
内容图文
![基于文件的存储](/upload/InfoBanner/zyjiaocheng/1328/3a3cbeceae41426a84e51569ed5d5bcc.jpg)
在iOS开发中,经常需要将数据存储到本地,实现的策略有很多,本篇文章简单介绍一下文件存储方式。
-
存储位置
我们可以将各种各样的数据存储到本地,在iOS应用中,这些文件应当存储在沙盒中
如果是需要持久化的数据应当存储在沙盒的Documents目录当中,如:
NSString * docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES) lastObject]; NSString * path = [docPath stringByAppendingPathComponent:@"file.txt"];
-
存储的数据格式
二进制数据:使用NSFileHandle类,如:
NSFileHandle * fh = [NSFileHandle fileHandleForWritingAtPath:path]; [fh writeData:data];
其中data是一个NSData对象,可以是任何数据
plist格式:与OC中的字典、数组、数值对象对应的非常好
这几种对象都可以有直接进行文件操作的方法,如:arrayWithContentOfFile: writeToFile:
JSON/XML格式:
网络开发中,网络上的数据特别是移动端进行网络通信中的数据大部分采用JSON/XML格式
从网络获取这些格式的数据封装在NSData对象中,可以直接调用NSData下面的方法进行文件存储:
+ (instancetype)dataWithContentsOfFile:(NSString *)path - (BOOL)writeToFile:(NSString *)path atomically:(BOOL)atomically
-
归档存储
另一个特殊的存储方式是将模型对象直接进行归档存储
要求:模型对象遵循NSCoding协议,并实现协议中的两个协议方法
如:
//AMPerson.h @interface AMPerson : NSObject <NSCoding> @property (nonatomic) NSString * name; @property (nonatomic) NSNumber * age; @end
//AMPerson.m - (void)encodeWithCoder:(NSCoder *)aCoder {//NSCoder是编码器对象 [aCoder encodeObject:self.name forKey:@"aaa"]; [aCoder encodeObject:self.age forKey:@"bbb"]; } - (instancetype)initWithCoder:(NSCoder *)aDecoder { if ( self = [super init] ) { self.name = [aDecoder decodeObjectForKey:@"aaa"]; self.age = [aDecoder decodeObjectForKey:@"bbb"]; } return self; }
//归档存储 AMPerson * p1 = [[AMPerson alloc] init]; p1.name = @"aaa"; p1.age = @10; AMStudent * p2 = [[AMStudent alloc] init]; p2.name = @"bbb"; p2.age = @20; p2.score = @99; AMPerson * p3 = [[AMPerson alloc] init]; p3.name = @"ccc"; p3.age = @30; NSArray * arr = @[p1, p2, p3]; [NSKeyedArchiver archiveRootObject:arr toFile:path];
//解档读取 NSArray * arr = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
本文出自 “teacherAn” 博客,请务必保留此出处http://annmeng.blog.51cto.com/3321237/1746331
原文:http://annmeng.blog.51cto.com/3321237/1746331
内容总结
以上是互联网集市为您收集整理的基于文件的存储全部内容,希望文章能够帮你解决基于文件的存储所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。