美文网首页
轻量级数据持久化的几种方式

轻量级数据持久化的几种方式

作者: CALayer_Sai | 来源:发表于2017-04-07 14:30 被阅读0次

1、plist文件

/**

描述:plist文件持久化,存一些小型的文件。

plist文件是将某些特定的类,通过**XML**文件的方式保存在目录中。

NSArray;//数组

NSMutableArray;//可变数组

NSDictionary;//字典

NSMutableDictionary;//可变字典

NSData;//二进制数据

NSMutableData;//可变二进制数据

NSString;//字符串

NSMutableString;//可变字符串

NSNumber;//基本数据

NSDate;//日期

*/

// 存储

[self writeToPlist];

// 取出

NSArray *result = [self readFromPlist];

NSLog(@"取出来的plist文件%@",result);

/**

读写文件-plist

*/

- (void)writeToPlist{

NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES).firstObject;

NSString *fileName = [path stringByAppendingPathComponent:@"123.plist"];

NSArray *array = @[@"1234", @"tony", @"java"];

//序列化,把数组存入plist文件

[array writeToFile:fileName atomically:YES];

}

- (NSArray *)readFromPlist{

NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES).firstObject;

NSString *fileName = [path stringByAppendingPathComponent:@"123.plist"];

//反序列化,把plist文件数据读取出来,转为数组

NSArray *result = [NSArray arrayWithContentsOfFile:fileName];

return result;

}

2、NSUserDefaults

/**

描述:NSUserDefaults

如果没有调用synchronize方法,系统会根据I/O情况不定时刻地保存到文件中。所以如果需要立即写入文件的就必须调用synchronize方法。

偏好设置会将所有数据保存到同一个文件中,使用同一个key进行存储数据,会覆盖之前存储的数据。

存的都是不可变的。

*/

//1.获得NSUserDefaults文件

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

//2.向偏好设置中写入内容

[userDefaults setObject:@"AAA" forKey:@"a"];

[userDefaults setBool:YES forKey:@"sex"];

[userDefaults setInteger:21 forKey:@"age"];

//2.1立即同步

[userDefaults synchronize];

//3.读取偏好设置

NSString *name = [userDefaults objectForKey:@"a"];

BOOL sex = [userDefaults boolForKey:@"sex"];

NSInteger age = [userDefaults integerForKey:@"age"];

NSLog(@"NSUserDefaults读取数据:%@, %d, %ld", name, sex, age);

3、归档与反归档

创建model对象:

Person.h

#import// `encodeWithCoder`:用来说明如何将对象编码到归档中。 `initWithCoder`:用来说明如何进行解档来获取一个新对象。@interface Person : NSObject//2.设置属性

@property (strong, nonatomic) NSString *name;

@property (strong, nonatomic) NSString *passWord;

+ (Person *)userWithName:(NSString *)name password:(NSString *)password;

Person.m

+ (Person *)userWithName:(NSString *)name password:(NSString *)password

{

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

user.name = name;

user.passWord = password;

return user;

}

//归档

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

[aCoder encodeObject:self.name forKey:@"name"];

[aCoder encodeObject:self.passWord forKey:@"passWord"];

}

//解档

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

if (self = [super init]) {

self.name = [aDecoder decodeObjectForKey:@"name"];

self.passWord = [aDecoder decodeObjectForKey:@"passWord"];

}

return self;

}

/**

描述:归档反归档

*/

// 归档

NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES).firstObject;

NSString *file = [path stringByAppendingPathComponent:@"person.data"];

Person *person = [Person userWithName:@"xiaowang" password:@"110"];

Person *person1 = [Person userWithName:@"xiaozhang" password:@"119"];

NSMutableArray *personsArr = [NSMutableArray arrayWithObjects:person, person1, nil];

// model数组存储

[NSKeyedArchiver archiveRootObject:personsArr toFile:file];

// 解档

NSString *pathResult = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES).firstObject;

NSString *fileResult = [pathResult stringByAppendingPathComponent:@"person.data"];

NSMutableArray *array = [NSKeyedUnarchiver unarchiveObjectWithFile:fileResult];

for (Person *per in array) {

if (per) {

NSLog(@"归档反归档:%@\n%@",per.name,per.passWord);

}

}

相关文章

  • 数据持久化

    数据持久化的几种方式

  • Android 数据持久化

    Android 数据持久化 在 Android 中数据持久化的方式有以下几种。 SQLiteSQLiteOpenH...

  • 轻量级数据持久化的几种方式

    1、plist文件 /** 描述:plist文件持久化,存一些小型的文件。 plist文件是将某些特定的类,通过*...

  • [Android] Realm 的初探

    关于Realm 在学习 Android 的时候 , 我们知道数据持久化的问题,对于数据持久化通常有以下几种方式: ...

  • swift 之归档和解归档

    数据持久化的方式有很多种,归档是其中的一种,说起数据持久化的方式,iOS 中基本有以下几种方式:sqlite存储、...

  • UI(十七)数据库->数据持久化

    数据持久化的几种方式:plist、NSUserDefaults、归档、sqlite sqlite:关系型数据库 以...

  • iOS数据持久化

    数据持久化的几种方式 NSUserDefaults 、plist 、keychain、归档 、沙盒 、数据库 1....

  • NSKeyedArchiver简述

    1.1关于数据的持久化存储的几种方式 说到NSKeyedArchiver,也就先要了解下iOS开发中关于数据持久...

  • iOS本地数据持久化

    本文内容: iOS本地数据持久化的几种类型 iOS本地数据持久化几种类型的应用场景及使用 一.iOS本地数据持久化...

  • SQLite数据库

    在学习SQLite之前,首先了解下数据持久化的几种方式: 定义:数据持久化是通过文件将数据存储在磁盘上 IOS下主...

网友评论

      本文标题:轻量级数据持久化的几种方式

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