ios数据持久化 - preference(偏好设置)

******  数据持久化常用的五种方式  ******

1.plist文件(属性列表)

2.preference(偏好设置)

3.NSKeyedArchiver(归档)

4.SQLite 3

5.CoreData


偏好设置是专门用来保存应用程序的配置信息的,一般不要在偏好设置中保存其他数据。

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

偏好设置会将所有数据保存到同一个文件中。即preference目录下的一个以此应用包名来命名的plist文件。

NSUserDefaults适合存储轻量级的本地数据,如登陆界面的数据,用户名、密码等用户偏好设置类的数据。下次启动应用的时候就可以直接从NSUserDefaults里面读取上次运行的数据。

如果使用自己建立的plist文件什么的,需要自己显式创建文件,读取文件,很麻烦,而如果用NSUserDefaults则不用管这些,就像读字典一样,直接读取数据就可以了,同时NSUserDefaults有缓存机制,可以避免频繁读写文件。

NSUserDefaults支持的数据格式有:NSNumber(BOOL、Integer、Float、Double),NSString,NSDate,NSArray,NSDictionary,NSData类型。

NSUserDefaults不能存储可变(mutable)类型,只能存储不可变类型

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

//添加preference

[defaults setObject:@"value1" forKey:@"key1"];

[defaults setObject:@1111 forKey:@"key2"];

[defaults synchronize];

//删除preference

[defaults removeObjectForKey:@"key1"];

[defaults synchronize];

//修改preference

[defaults setObject:@"value2" forKey:@"key1"];

[defaults synchronize];

//删除所有preference

NSString *appDomainStr = [[NSBundle mainBundle] bundleIdentifier];

[defaults removePersistentDomainForName:appDomainStr];

NSString *key1Value = [defaults objectForKey:@"key1"];

NSNumber *key2Value = [defaults objectForKey:@"key2"];

NSLog(@"偏好设置=%@=%@",key1Value,key2Value);

你可能感兴趣的:(ios数据持久化 - preference(偏好设置))