标签:
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);
运行结果如图所示:
《下面做个练习题,搞一搞吧~~》
想知道具体步骤???留言!!!
标签:
原文地址:http://www.cnblogs.com/zhoulina/p/zhoulina_love_life.html