zoukankan      html  css  js  c++  java
  • 【ios系列】-数据储存

    第一:plist属性列表

    适用对象:仅仅是Foundation框架自带的一些类比如:NStringNSarryNSDictionaryNSsetNSnumberNSdata
    

    使用:
    1:调用对象的writeToFile方法就可以写入文件
    2:调用对象的array(...)WithContentsOfFile方法就可以从文件读取对象内容

    存储:

    //1,获得沙盒跟路径
    NSString *home = NSHomeDirectory();
    NSLog(@"%@",home);
    //2,doucument路径,方法会自动拼接”/“
    NSString *docPath = [home stringByAppendingPathComponent:@"Documents"];
    //3,NSString,字典,数组,NSData,NSNumber,常见的数据类型
    //新建数据
    NSArray *data = @[@"java",@10,@"lallal"];
    NSString *filePath = [docPath stringByAppendingPathComponent:@"data.plist"];
    [data writeToFile:filePath atomically:YES];
    

    读取:

    //1,获得沙盒跟路径
    NSString *home = NSHomeDirectory();
    NSLog(@"%@",home);
    //2,doucument路径
    NSString *docPath = [home stringByAppendingPathComponent:@"Documents"];
    //3,NSString,字典,数组,NSData,NSNumber,常见的数据类型
    //文件路径
    NSArray *data = @[@"java",@10,@"lallal"];
    NSString *filePath = [docPath stringByAppendingPathComponent:@"data.plist"];
    
    //读取数据
    NSArray *array = [NSArray  arrayWithContentsOfFile:filePath];
    NSLog(@"%@",array);
    

    第二:偏好设置

    本质上还是plist属性列表的方式存储
    存储简单不关心文件夹和文件名,但是只能存储到一个文件中(不能储存大量数据)
    

    存储:

    //1,利用NSUserDefaults能直接访问软件的偏好设置文件夹
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    //2,存储数据
    [defaults setObject:@"tf" forKey:@"account"];
    [defaults setObject:@"123" forKey:@"pwd"];
    
    //3,立刻同步
    [defaults synchronize];
    

    读取:

    //读取
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSString *account = [defaults objectForKey:@"account"];
    NSLog(@"%@",account);

    第三:NSCodeing

    1:能将任何遵守了NSCodeing协议的对象塞进文件中
    

    使用:
    1:-(void)encodeWithCoder:(NSCoder *)aCoder
    将对象归档的时候就会调用,(将对象写入到文件之前会调用)
    在这个方法中说清楚;1:那些属性要进行存储,2:怎样储存
    2:-(id)initWithCoder:(NSCoder *)aDecoder
    从当前文件中解析对象是调用
    在这个方法中说清楚,1:那些属性需要解析(读取),2:怎样解析这些属性
    注:如果父类中也有属性需要归档或者读取,必须调用super的encodeWithCoder:和initWithCoder:方法

    对象中调用:
    在遵循协议NSCoding的实现“.m”文件中

    //存储:需要重写的方法:
    -(void)encodeWithCoder:(NSCoder *)aCoder
    {
        //将name属性进行编码,
        [aCoder encodeObject:_name forKey:@"name"];
        [aCoder encodeInt:_age forKey:@"age"];
    }
    
    // 读取:需要重写的方法
    -(id)initWithCoder:(NSCoder *)aDecoder
    {
        if (self = [super init]) {
            _name = [aDecoder decodeObjectForKey:@"name"];
            _age = [aDecoder decodeIntForKey:@"age"];
        }
        return self;
       
        //调用父类的方法
        //    if (self = [super initWithCoder:aDecoder]) {
        //
        //    }
       
    }
    

    注:如果是子类进行存取的话,需要在相应的方法第一行调用,这样父类中已经声明要进行归档的对象就不用重复声明了。

    [super encodeWithCoder:aCoder];
    if (self = [super initWithCoder:aDecoder]) {
     }
    

    实例,储存:

    //归档
    Person *p = [[Person alloc] init];
    p.name = @"jack";
    p.age = 10;
    p.height = 1.89;
    
    NSString *path = @"/Users/tengfei/Desktop/person.data";
    [NSKeyedArchiver archiveRootObject:p toFile:path];
    

    读取:

    //读档
    NSString *path = @"/Users/tengfei/Desktop/person.data";
    
    Person *p = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
    NSLog(@"name:%@,age:%d",p.name,p.age);
    

    ---后面稍后进行介绍:

    第四:SQLite
    适用于大批量数据
    第五:Core Data
    ios5.0以后才出现,效率底下(SQLite3)

  • 相关阅读:
    View(视图)
    计算器 ——给按钮添加监听器
    Activity(活动)
    UI组件
    计算器界面——GridLayout
    信息界面——GridLayout
    Android计算器界面 TableLayout
    javaji基础x2
    java的开始
    数据类型
  • 原文地址:https://www.cnblogs.com/fengtengfei/p/4354376.html
Copyright © 2011-2022 走看看