应用数据存储方式


1.Bundle路径 app的安装目录

NSString *bundlePath = [NSBundle mainBundle].bundlePath;


2.沙盒路径: app存储数据的
NSString *document = NSHomeDirectory();

获取沙盒 documents  路径

[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]



#pragma mark - 2数据的三种存储方式


//1、获取沙盒 documents  路径
NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,
YES) lastObject];
//2、拼接文件名
path = [path stringByAppendingPathComponent:
@"data.zzz"];

#pragma mark- 第一种方式 用于普通文件
//1.writeTofile
[names writeToFile:path atomically:
YES];

#pragma mark- 第二种方式 用于用户数据
//2.偏好设置 存储
1.获取偏好设置对象
   NSUserDefaults *defaul = [NSUserDefaults standardUserDefaults];

2.存储数据
[defaul setObject:
@"小明" forKey:@"name"];
[defaul setInteger:
100 forKey:@"money"];
[defaul setBool:
NO forKey:@"youmeiyou"];

3.立即同步
[defaul synchronize];

#pragma mark- 第三种方式 用于存储对象
//3.归档
[NSKeyedArchiver archiveRootObject:p toFile:path];
   
解档
Person *p =  [NSKeyedUnarchiver  unarchiveObjectWithFile:path];

1.遵守 NSCoding 协议
//"归档"只是 存储数据的过程
//这是告诉系统 对象的哪些属性需要存储,该如何存储;若该属性没写不会存储进去
-(
void)encodeWithCoder:(NSCoder *)aCoder
{
    [aCoder encodeObject:
self.name forKey:@"name"];
    [aCoder encodeInt:
self.girl forKey:@"girl"];
    [aCoder encodeBool:
self.sure forKey:@"sure"];
}

//"归档"只是 读取数据的过程
//这是告诉系统 取出的哪些数据赋值给对象的哪些属性,若该属性没写不会获取出来
- (
instancetype)initWithCoder:(NSCoder *)aDecoder
{
   
if(self = [super init]){
       
       
self.name =  [aDecoder  decodeObjectForKey:@"name"];
       
self.girl = [aDecoder decodeIntForKey:@"girl"];
       
self.sure = [aDecoder decodeBoolForKey:@"sure"];
    }
   
return self;
}


转载于:https://my.oschina.net/kaqijiang/blog/597168

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值