iOS 本地数据持久化

原创 2015年11月21日 16:00:47

本地数据持久化

1. 使用本地文件读写方式的本地数据持久化

对于通过本地文件读写方式的本地数据持久化来说, 只支持 字符串, 数组, 字典, 二进制数据(NSData)

  1. 字符串的读写
     
    /字符串的写入过程(实现文件内容拼接)/
    //1. 获取源文件的路径
    //1). 获取 Documents (存放永久存储的数据)文件夹路径
    NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
    //2). 拼接上文件路径
    NSString *filePath = [documentPath stringByAppendingPathComponent:@"sara.txt"];
    //2. 获取源文件的内容
    NSString *oldStr = [NSString stringWithContentOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
    //3. 将原有数据与新数据拼接在一起
    NSString *newStr = [oldStr stringByAppendingFormat:@"%@", self.firstTF.text];
    if (!newStr) {
    newStr = self.firstTF.text;
    }
    //4. 将新的字符串写入文件
    [newStr writeToFile:filePath automically:YES encoding:NSUTF8StringEncoding error:nil];//atomically 保证写入安全
    /字符串的读取过程/
    NSString *text = [NSString stringWithContentsO分File:filePath encoding:NSUTF8StringEncoding error:nil];
    //让第二个输入框显示
    self.secondTF.text = text;
  2. 数组的读写
    //将数组写入文件 
    [stringArray writeToFile:filePath atomically:YES];//stringPath 是一个数组
    //将数组从文件中读取出来
    NSArray *dataArray = [NSArray arrayWithContentsOfFile:filePath];
    self.firstTF.text = [dataArray firstObject];
    self.secondTF.text = [dataArray lastObject];
  3. 字典的读写
    //将字典写入文件 
    [dic writeToFile:filePath atomically:YES];
    //将字典从文件中读取
    NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:filePath];
    self.firstTF.text = dic[@"tf1"];
    self.secondTF.text = dic[@"tf2"];
  4. 二进制数据的读写
    //将二进制数据写入文件 
    [data writeToFile:filePath atomically:YES];
    //将二进制数据从文件中读取出来
    NSData *data = [NSData dataWithContentOfFile:filePath];

2. 使用归档与反归档方式的本地数据持久化

//Contact类服从NSCoding 协议
//当对一个对象进行归档时, 自动调用该方法, 为该对象的实例变量进行归档操作
-(void)encodeWithCoder:(NSCoder *)aCoder {
    //内部要对每一个实例变量进行归档
    [aCoder encodeObject:_name forkey:@"name"];
    [aCoder encodeObject:_gender forKey:@"gender"];
    [aCoder encodeObject:@(_age) forKey:@"age"];
    [aCoder encodeObject:_phone forKey:@"phone"];
}
//当对一个对象进行反归档时触发, 自动调用该方法, 为该对象的实例变量进行反归档操作
-(id)initWithCoder:(NSCoder *)aDecoder {
    self = [super init];
    if (self) {
        self.name = [aDecoder decodeObjectForKey:@"name"];
        self.gender = [aDecoder decodeObjectForKey:@"gender"];
        self.age = [[aDecoder decodeObjectForKey:@"age"] integerValue];
        self.phone = [aDecoder decodeObjectForKey:@"phone"];
    }
    return self;
}
//一. 归档
//将自定义的联系人对象contact进行本地数据持久化
//Contact *contact = [[Contact alloc] initWithName:@"Sara Burton" Gender:@"女" Age:18 phone:@"150xxxxxxxx"];
//1. 创建归档工具对象
NSMutableData *mData = [NSMutableData data];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:mData];
//2. 开始归档
[archiver encodeObject:contact forKey:@"contact"];
//3. 结束归档
[archiverfinishEncoding];// 一个结束归档就可以了
[contact release];
[archiver release];
//4. data 写入文件
[mData writeToFile:filePath atomically:YES];
//二. 反归档
//1. 从本地读取数据
NSData *data = [NSData dataWithContentsOfFile: filePath];
//2. 创建反归档工具
NSkeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
//3. 开始反归档
Contact *contact = [unarchiver decodeObjectForKey:@"key"];
//4. 结束反归档
[unarchiver finishDecoding];
//5. 释放
[unarchiver release];
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

iOS 数据持久化

http://blog.csdn.net/chyroger/article/details/5785297 http://blog.csdn.net/ios_che/article/details/7...

ios持久化保存数据

  • 2013-09-03 20:26
  • 83KB
  • 下载

IOS数据持久化的几种方式

  • 2017-02-08 15:32
  • 123KB
  • 下载

iOS中几种数据持久化方案

[转自:http://www.cocoachina.com/ios/20150720/12610.html] 概论 所谓的持久化,就是将数据保存到硬盘中,使得在应用程序或机器重启后...

IOS 数据持久化之属性列表

IOS 数据持久化之属性列表 在IOS中,对于数据的持久化存储,IOS提供了四种机制,分别是: 1、属性列表 2、对象归档 3、数据库存储(SQLITE) 4、Core Data 下面...

iOS 数据持久化(三)NSUserDefaults

iOS中有五种持久化数据的方式:属性列表、对象归档、NSUserDefaults、SQLite3和Core Data NSUserDefaults官方文档介绍: NSUserDefaults类为和默认...
  • swplzj
  • swplzj
  • 2013-11-21 14:49
  • 3894

iOS数据持久化存储 (1)-- Plist 、归档、NSUserDefaults、NSFileManager

iOS数据持久化存储(1) iOS 数据持久化存储方式有很多,博主今天只跟大家分享以下四种方法: Plist文件、归档、NSUserDefaults 和NSFileManager   一...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)