IOS学习 沙盒位置,沙盒存储的三种方式:plist文件,偏好设置,归档

在Mac OS 10.10.5和Xcode7.2的环境下

沙盒的位置:

/Users/liaojianguo/Library/Developer/CoreSimulator/Devices/C07367C4-84A0-4CA2-9FFB-DAB3B7C8CB81/data/Containers/Data/Application/20D764F7-EAC2-4375-909B-99409CD0B2EC/Documents


注:红色字体的路径表示设备的路径

        蓝色字体的路径表示应用的路径


===


默认情况下,每个沙盒含有3个文件夹:Documents、Library 和 tmp。

Documents:苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下;
Library:存储程序的默认设置或其它状态信息;
tmp:提供一个即时创建临时文件的地方。

- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

    [self demo8];

}


//解归档

-(void)demo8{

    //获取路径

    NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

    

    //拼接文件名

    NSString *filePath = [path stringByAppendingPathComponent:@"person.plist"];

    

    //读取数据

    Person *person = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];

    

    NSLog(@"name = %@,phone = %@",person.name,person.phone);

}


//用归档的方式存储:可能存储任何格式文件

-(void)demo7{

    //创建Person对象

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

    

    //person赋值

    person.name = @"longfeng";

    person.phone = @"123456";

    

    //获取document路径

    NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

    

    //拼接路径

    NSString *filePath = [path stringByAppendingPathComponent:@"person.plist"];

    

    //通过归档的方式存储

    [NSKeyedArchiver archiveRootObject:person toFile:filePath];

    NSLog(@"%@",filePath);

    

}


//读取偏好设置

-(void)demo6{

    //创建NSUserDefaults对象

    NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults];

    

    //获取数据

    BOOL isAuto = [userDefaults boolForKey:@"isAutologin"];

    NSString * name = [userDefaults objectForKey:@"name"];

    NSString * pwd = [userDefaults objectForKey:@"pwd"];

    

    NSLog(@"%d---%@----%@",isAuto,name,pwd);


}


//偏好设置存储:一般存储用户名、密码等重要的小数据信息

-(void)demo5{

    //创建NSUserDefaults对象

    NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults];

    

    //设置数据

    [userDefaults setBool:YES forKey:@"autoLogin"];

    [userDefaults setObject:@"ZLF" forKey:@"name"];

    [userDefaults setObject:@"123" forKey:@"pwd"];

    

    //立即存储

    [userDefaults synchronize];

    NSLog(@"%@",NSHomeDirectory());

}


//将沙盒中name.plist文件读出来

-(void)demo4{

    //1.获取路径

    NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];

    

    //2.拼接路径

    NSString *filePath = [path stringByAppendingPathComponent:@"name.plist"];

    

    //3.读取数据

    NSArray *array = [NSArray arrayWithContentsOfFile:filePath];

    NSLog(@"%@",array);

}


//将数组以plist文件格式存入沙盒

-(void)demo3{

    //1.创建数据

    NSArray *array = [NSArray arrayWithObjects:@"jianguo",@"yihong",@"longfeng",@"youyou",@"多多", nil];

    

    //2.获取documents路径

    NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];

    

    //3.拼接文件名

    NSString *filePath = [path stringByAppendingPathComponent:@"name.plist"];

    

    //4.存储 参数2:是否允许原子型写入

    [array writeToFile:filePath atomically:YES];

    NSLog(@"%@",filePath);

}


-(void)demo2{

    //获取caches文件夹:用于存放临时数据,例:下载的图片,需要管理的内存,

    

    NSString * caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];

    

    NSLog(@"%@",caches);

}


-(void)demo1{

    //获取沙盒路径

    NSLog(@"沙盒路径:%@",NSHomeDirectory());

    

    //获取Bundle路径

    NSLog(@"boundle路径:%@",[NSBundle mainBundle].bundlePath);

    

    //获取Documents文件夹:长久存放的大数据,例:通讯录

    //1.获取沙盒路径

//    NSString *homePath = NSHomeDirectory();

    

    //2.拼接字符串 (方式一)

//    NSString *documentPath = [homePath stringByAppendingString:@"/Documents"];

    

    //方式二:作为路径的一部分

//    NSString *documentPath = [homePath stringByAppendingPathComponent:@"Documents"];

    

    //方式三 参数1:目标文件夹 参数2:作用域 参数3:是否隐藏或显示全路径

    NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

    NSLog(@"%@",documentPath);

    

}



#import <Foundation/Foundation.h>


@interface Person : NSObject<NSCoding>

@property(nonatomic,retain)NSString *name;

@property(nonatomic,retain)NSString *phone;


@end



@implementation Person

//归档  告诉系统要存储对象的哪些属性

- (void)encodeWithCoder:(NSCoder *)aCoder

{

    [aCoder encodeObject:_name forKey:@"name"];

    [aCoder encodeObject:_phone forKey:@"phone"];

}


//解归档  读取对象的哪些属性

- (instancetype)initWithCoder:(NSCoder *)aDecoder

{

    if (self = [super init])

    {

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

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

    }

    return self;

}

@end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值