美文网首页
iOS 数据存储的常用方式

iOS 数据存储的常用方式

作者: 阶梯 | 来源:发表于2018-03-06 17:25 被阅读9次
应用沙盒.png 沙盒机构分析.png
  • XML属性列表(plist)归档
  • Preference(偏好设置)
  • NSKeyedArchiver 归档 (NSCoding)
  • SQLite3
  • Core Data

一、plist存储

  • 写入
//第一个参数:搜索的目录
//第二个参数:搜索的范围
//第三个参数:是否展开路径(在ios当中识别~)
NSString *path = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];
NSLog(@"%@",path);
//stringByAppendingPathComponent拼接一个文件路径.自动加一个(/)
NSString *filePath = [path stringByAppendingPathComponent:@"data.plist"];
NSLog(@"%@",filePath);
//把数组保存到沙盒
NSArray *dataArray =  @[@"xmg",@10];
//路径是沙盒路径.
[dataArray writeToFile:filePath atomically:YES];
  • 注意: 在plist文件当中是不能够保存自定义的对象

  • 读取

NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
NSString *filePath = [path stringByAppendingPathComponent:@"data.plist"];
NSArray *dataArray = [NSArray arrayWithContentsOfFile:filePath];
NSLog(@"%@",dataArray);

二、偏好设置
NSUserDefaults它保存也是一个plist.

一些应用都支持偏好设置,比如保存用户名,密码,字体大小等设置,可以通过NSUserDefaults来存取偏好设置。比如,保存用户名,字体大小,是否自动登录。

  • 存储
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);

三、NSKeyedArchiver 归档 (NSCoding)

  • 创建对象类
@property (nonatomic, strong) NSString *name;
@property (nonatomic, assign) int age;
@property (nonatomic, strong) Dog *dog;

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

//当解析一个文件的时候调用.(告诉当前要解析文件当中哪些属性.)
- (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;
}
  • 存储
Person *per =  [[Person alloc] init];
per.name = @"xmg";
per.age = 10;

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

相关文章

  • iOS数据存储

    iOS应用数据存储方式(XML属性列表-plist) 一、ios应用常用的数据存储方式 1.plist(XML属性...

  • ios数据存储

    数据存储 iOS应用数据存储的常用方式 - XML属性列表(plist)归档 - Preference(偏好设置)...

  • 数据存储(归档解档,沙河存储)

    数据存储 iOS应用数据存储的常用方式 XML属性列表(plist)归档 存Documents中 Prefere...

  • 数据存储

    iOS应用数据存储的常用方式 1. Plist存储(属性列表) Plist存储(Documents) Plist提...

  • iOS数据持久化

    iOS数据持久化 iOS应用数据存储的常用方式 XML属性列表(plist)归档 Preference(偏好设置)...

  • 数据存储之NSKeyedArchiver

    ios开发常用的五种数据存储方式: plist NSUserDefaults NSKeyedArchiver FM...

  • iOS数据存储的常用方式

    iOS数据存储的常用方式 属性列表(plist)归档 Preference(偏好设置) NSKeyedArchiv...

  • 数据存储之CoreData(基础)

    ios开发常用的五种数据存储方式: plist NSUserDefaults NSKeyedArchiver FM...

  • 数据存储之FMDB

    ios开发常用的五种数据存储方式: plist NSUserDefaults NSKeyedArchiver FM...

  • 数据存储之Plist文件读写

    ios开发常用的五种数据存储方式: plist NSUserDefault NSKeyedArchiver FMD...

网友评论

      本文标题:iOS 数据存储的常用方式

      本文链接:https://www.haomeiwen.com/subject/pkdrfftx.html