iOS中三种数据存储(本地持久化),cell是手写创建和stroyboard或者xib创建的初始化的方法

三数据存储:

1.plist 属性列表

1>适用对象:仅仅是Foundation 框架中的自带的一些类,比如NSString NSArray NSDIcionaryNSSetNSNumberNSData

2.适用对象WriteToFile...方法写入文件

3>调用对象...WithContentsOfFile方法就可以从文件中读取对象内容

2.偏好设置

1>本质还是plist属性列表的方式进行存储

2>存取非常简单

*不需要关心文件名

3>只能存储到一个文件中(不能存放大批量数据)

3.NSCoding

1.能将任何遵守NSCoding协议的对象塞进文件中

2.- (void)encodeCoder:(NSCoder *)encoder

*将对象规档的时候调用(将对象写入文件之前会调用)

/在这个方法说清楚:

1.哪些属性需要存储

2.怎样存储这些属性

3.- (id)initWIthCoder:(NSCoder *)decoder

*当从文件中解析对象时调用

//在这个方法中说清楚:

//1.哪些属性需要解析(读取)

//2.怎样解析(读取)这个属性

4.如果父类中也有属性需要归档或者读档,必须董昂用super的encodeCoder和initWithCoder方法

//- (IBAction)xieru:(id)sender {

//    //1.获取沙盒根路径

//    NSString *home = NSHomeDirectory();

//    //2.document路径

//    NSString *docPath = [home stringByAppendingPathComponent:@"Documents"];

//    //3.新建数据

//    NSArray *data = @[@"jack",@"10",@"ffdsf"];

//    NSString *filepath = [docPath stringByAppendingPathComponent:@"data.plist"];

//    [data writeToFile:filepath atomically:YES];

//    

//}

//- (IBAction)duchu:(id)sender {

//    //1.获取沙盒根路径

//    NSString *home = NSHomeDirectory();

//    //2.document路径

//    NSString *docPath = [home stringByAppendingPathComponent:@"Documents"];

//    //3.文件路径

//    NSString *filepath = [docPath stringByAppendingPathComponent:@"data.plist"];

//    //4.读取数据

//    NSArray *data = [NSArray arrayWithContentsOfFile:filepath];

//    NSLog(@"%@",data);

//    

//    

//}

//

- (void)save{

    //1.利用NSUserdefaults ,就能直接访问软件的偏好设置

    //不关心文件夹和文件名

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    [defaults setObject:@"mj" forKey:@"accout"];

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

    [defaults setInteger:10 forKey:@"age"];

    

    [defaults setBool:YES forKey:@"auto_login"];

    

    //立即同步

    [defaults synchronize];

}

- (void)read{

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    NSString *accout = [defaults objectForKey:@"pwd"];

    

}

#import "Person.h"

@implementation Person

//对象归档的时候回调用(将对象写入文件之前会调用)

//在这个方法说清楚:

//1.哪些属性需要存储

//2.怎样存储这些属性

- (void)encodeWithCoder:(NSCoder *)encoder{

    //将_name 属性值进行编码 (会将_name的值存入文件)

    [encoder encodeObject:_namge forKey:@"name"];

    [encoder encodeInt32:_age forKey:@"age"];

}

//解码

- (id)initWithCoder:(NSCoder *)decoder{

    if (self = [super init]) {

        _namge = [decoder decodeObjectForKey:@"name"];

        _age = [decoder decodeInt32ForKey:@"age"];

    }

    return self;

}

@end

- (IBAction)dianji:(id)sender {

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

    p.namge = @"chihaitao";

    p.age = 12;

    p.gender = YES;

    NSString *path = @"/User/apple/Desktop/person.data";

    //1.编码encodeWithCoder2.归档

   [NSKeyedArchiver archiveRootObject:p

                               toFile:path];

}

- (IBAction)duchulai:(id)sender {

    

     NSString *path = @"/User/apple/Desktop/person.data";

    //1.initWithCoder解码 2.反归档

    Person *p = [NSKeyedUnarchiver unarchiveObjectWithFile:path];

    

}

原文地址:https://www.cnblogs.com/wohaoxue/p/4958868.html