码迷,mamicode.com
首页 > 移动开发 > 详细

iOS-Senior1-数据处理(文件读写)

时间:2016-05-03 23:39:33      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:

1.Model的数据层的理解

技术分享     技术分享

1.1沙盒基础

 

 

沙盒定义:每个iOS应用程序都会为自己创建一个文件系统目录(文件夹),这个独立,封闭,安全的空间,叫做沙盒。

沙盒特点:

技术分享

 

 

沙盒的文件夹及各个文件夹的作用

 技术分享

 

查找沙盒的两个方式:

1.点击finder -> 前往(左上角)- > 按住alt键  -> 资源库 -> Developer -> CoreSimulator -> (目标文件夹) 

2.搜索 -> 终端 -> 命令行:

显示:defaults write com.apple.finder AppleShowAllFiles -bool true
隐藏:defaults write com.apple.finder AppleShowAllFiles -bool false

 

1.2数据本地化知识点

技术分享

 

数据本地化定义以及方式:

 

技术分享

2.文件读写(存储)

2.1简单数据类型写入本地(字符串,数组,字典,NSData类型的数据存储在本地)NSString,NSArray(以字符串为例)

技术分享

 

 

 

运行结果如图所示

技术分享

 

 

 

2.2(存储NSData类型的数据)读取图片image写入本地

技术分享

 

 

代码如下:

技术分享

 

运行结果如图所示

技术分享

 

 

2.3复杂对象存入本地(Person)

 

 

    源代码如下:

Person.h文件中:

 ///姓名

@property (nonatomic,copy) NSString *name;

///性别

@property (nonatomic,copy) NSString *gender;

 ///年龄

@property (nonatomic,assign) NSInteger age;

 

Person.m文件中:

//归档:将所有的属性进行归档

- (void)encodeWithCoder:(NSCoder *)aCoder {

    [aCoder encodeObject:self.name forKey:@"name"];

    [aCoder encodeObject:self.gender forKey:@"gender"];

    [aCoder encodeInteger:self.age forKey:@"age"];

}

 

//解档(反归档)

- (instancetype)initWithCoder:(NSCoder *)aDecoder {

    self = [super init];

    if (self) {

        self.name = [aDecoder decodeObjectForKey:@"name"];

        self.gender = [aDecoder decodeObjectForKey:@"gender"];

        self.age = [aDecoder decodeIntegerForKey:@"age"];

    }

    return self;

}

ViewController.m文件中

 

 //如何把一个Person类型的对象存入本地,即为复杂对象的本地化,这个对象必须遵守NSCoding协议,并实现协议中的两个方法

 

#pragma mark - 复杂对象的本地化

 

#pragma mark - 归档过程

 

    //1.找寻Documents文件夹的目录

 

    NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

 

    //2.创建Person对象

 

    Person *person = [[Person alloc]init];

 

    person.name = @"MBBoy";

 

    person.gender = @"boy";

 

    person.age = 18;

 

    

 

    //3.把这个对象归档

 

    //3.1创建NSMutableData,用于初始化归档工具的

 

    NSMutableData *data = [NSMutableData data];

 

    NSLog(@"data = %@",data);

    //3.2创建归档工具的

 

    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc]initForWritingWithMutableData:data];

 

    //3.3对要归档的person对象进行归档

 

    [archiver encodeObject:person forKey:@"person"];

 

    //3.4结束归档

 

    [archiver finishEncoding];

 

    NSLog(@"data1 = %@",data);

 

    

 

    //4.将归档的内容存储在本地

 

    NSString *personPath = [documentPath stringByAppendingPathComponent:@"person.plist"];

 

    //写入路径

 

    [data writeToFile:personPath atomically:YES];

 

    NSLog(@"personPath = %@",personPath);

 

#pragma mark - 解档过程

    //1.将要解档的数据找出来

    NSData *resultData = [NSData dataWithContentsOfFile:personPath];

    NSLog(@"resultData = %@",resultData);

 

    //2.创建解档工具

    NSKeyedUnarchiver *unArchiver = [[NSKeyedUnarchiver alloc]initForReadingWithData:resultData];

 

    //3.对person对象进行解档[使用一个对象接收,有返回值]

    Person *newPerson = [unArchiver decodeObjectForKey:@"person"];

 

    //4.结束解档

    [unArchiver finishDecoding];

    

    NSLog(@"name = %@,gender = %@,age = %ld",newPerson.name,newPerson.gender,newPerson.age);

 

运行结果如图所示

技术分享

 

 

《下面做个练习题,搞一搞吧~~》

技术分享

 

想知道具体步骤???留言!!!

    

 

 

    

 

 

 

 

 

 

 

 

 

 

  

 

iOS-Senior1-数据处理(文件读写)

标签:

原文地址:http://www.cnblogs.com/zhoulina/p/zhoulina_love_life.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!