数据存储

一、NSCoding :  使用NSCoding需要遵守<NSCoding>

保存:

/**

 *  将某个对象写入文件时会调用

 *  在这个方法中说清楚哪些属性需要存储

 */

MJStudent.m

- (void)encodeWithCoder:(NSCoder *)encoder

{

    [encoder encodeObject:self.no forKey:@"no"];

    [encoder encodeInt:self.age forKey:@"age"];

    [encoder encodeDouble:self.height forKey:@"height"];

}

 

存储:

 // 1.新的模型对象

    MJStudent *stu = [[MJStudent alloc] init];

    stu.no = @"42343254";

    stu.age = 20;

    stu.height = 1.55;

    

    // 2.归档模型对象

    // 2.1.获得Documents的全路径

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

    // 2.2.获得文件的全路径

    NSString *path = [doc stringByAppendingPathComponent:@"stu.data"];

    // 2.3.将对象归档

 

    [NSKeyedArchiver archiveRootObject:stu toFile:path];

 

 

 

/**

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

 *  在这个方法中说清楚哪些属性需要存储

 */

- (id)initWithCoder:(NSCoder *)decoder

{

    if (self = [super init]) {

        // 读取文件的内容

        self.no = [decoder decodeObjectForKey:@"no"];

        self.age = [decoder decodeIntForKey:@"age"];

        self.height = [decoder decodeDoubleForKey:@"height"];

    }

    return self;

 

}

 

 

读取:

 

// 1.获得Documents的全路径

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

    // 2.获得文件的全路径

    NSString *path = [doc stringByAppendingPathComponent:@"stu.data"];

    

    // 3.从文件中读取MJStudent对象

    MJStudent *stu = [NSKeyedUnarchiver unarchiveObjectWithFile:path];

    

 

    NSLog(@"%@ %d %f", stu.no, stu.age, stu.height);

 

二、

偏好设置:(保存与读取)

保存:

// 1.利用NSUserDefaults,就能直接访问软件的偏好设置(Library/Preferences)

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    

    // 2.存储数据

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

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

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

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

    

    // 3.立刻同步

    [defaults synchronize];

 

 

读取:

 

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    

    NSString *account = [defaults objectForKey:@"account"];

    BOOL autoLogin = [defaults boolForKey:@"auto_login"];

 

    NSLog(@"%@ -- %d", account, autoLogin);

 

三、

Plist存储:(保存与读取)

保存:

// 不同的设备根路径可能不一样,设备和虚拟机的路径也不一样,所以最好使用NSHomeDirectory(),系统会自动返回一个根路径

// 1.获得沙盒根路径

    NSString *home = NSHomeDirectory();

 

// 拼接路劲,根路径有Documents这个文件夹,所以拼接这个文件夹路劲

// 2.拼接document路径

 

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

 

 

// 4.新建数据

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

// 5.文件路径

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

// 将文件写入对应的文件路径保存

[data writeToFile:filepath atomically:YES];

 

 

读取:

// 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);

posted @ 2015-04-27 00:26  pocket_live  阅读(122)  评论(0编辑  收藏  举报