快上网专注成都网站设计 成都网站制作 成都网站建设
成都网站建设公司服务热线:028-86922220

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

基于文件的存储-创新互联

在iOS开发中,经常需要将数据存储到本地,实现的策略有很多,本篇文章简单介绍一下文件存储方式。

创新互联公司是一家专业提供许昌企业网站建设,专注与网站制作、成都网站建设H5高端网站建设、小程序制作等业务。10年已为许昌众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。
  • 存储位置

我们可以将各种各样的数据存储到本地,在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 

@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];

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享题目:基于文件的存储-创新互联
链接地址:http://6mz.cn/article/ccjdcg.html

其他资讯