iOS 沙河路径

2018-12-14  本文已影响18人  DeerRun

沙河路径

每个iOS 应用都有自己的沙盒路径,应用沙盒就是文件系统目录
应用沙盒文件目录:应用程序包、Document、Library(下面有Caches和Preferences )、tmp文件

Library/Preferences:保存应用的所有偏好设置,iOS的Settings(设置)应用会在该目录中查找应用的设置信息,iTunes会自动备份该目录。
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);

文件操作

使用系统Foundation框架下的NSFileManager文件操作类实现,在沙河路径下需指定新建文件夹的绝对路径

偏好设置

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:@"xmg" forKey:@"name"];
    [defaults setInteger:10 forKey:@"age"];

    //立马写入到文件当中
    [defaults synchronize];

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSString *name = [defaults objectForKey:@"name"];
    NSLog(@"name ===%@",name);
    NSInteger age = [defaults integerForKey:@"age"];
    NSLog(@"%ld",age);

编解码归档 NSCoding

解码

//当解析一个文件的时候调用.(告诉当前要解析文件当中哪些属性.)
- (instancetype)initWithCoder:(NSCoder *)aDecoder{
    
    //当只有遵守了NSCoding协议时,才有[super initWithCoder]
    if (self = [super init]) {
        
       self.name = [aDecoder decodeObjectForKey:@"name"];
       self.age = [aDecoder decodeIntForKey:@"age"];
       self.dog = [aDecoder decodeObjectForKey:@"dog"];
    }
    return self;
}

编嘛

//在保存对象时告诉要保存当前对象哪些属性.
-(void)encodeWithCoder:(NSCoder *)aCoder{
    
    [aCoder encodeObject:self.name forKey:@"name"];
    [aCoder encodeInt:self.age forKey:@"age"];
    [aCoder encodeObject:self.dog forKey:@"dog"];
    
}

运用

//获取沙盒目录
    NSString *tempPath =  NSTemporaryDirectory();
    NSString *filePath = [tempPath stringByAppendingPathComponent:@"Person.data"];
    NSLog(@"%@",tempPath);
    
    //归档 archiveRootObject会调用encodeWithCoder:
    [NSKeyedArchiver archiveRootObject:per toFile:filePath];

//unarchiveObjectWithFile会调用initWithCoder
    Person *per = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
上一篇 下一篇

猜你喜欢

热点阅读