ios NSUserDefaults使用注意事项

NSUserDefaults适合存储轻量级的数据,他不仅可以存储基本数据类型,还可以存储NSNumber(Integer、Float、Double),NSString,NSDate,NSArray,NSDictionary,BOOL类型。


[NSUserDefaults standardUserDefaults]是系统提供的单例方法。一般通过[[NSUserDefaults standardUserDefaults] setObject:forKey:]来存储数据,通过[[NSUserDefaults standardUserDefaults] objectForKey:]来获取已存数据。每次存储数据后用[[NSUserDefaults standardUserDefaults] synchronize]方法持久化数据,直接同步到文件里。NSUserDefaults存储方式跟字典类似,事实上,NSUserDefaults就是一个plist文件。


但是NSUserDefaults不能存储自定义的类对象,若把一个对象存储到NSUserDefaults会报错。聪明的人会把对象放进数组,再把数组存入NSUserDefaults,不过这样做事错误的,因为数组中包含了自定义对象。


若要在NSUserDefaults中存入自定义对象,则对象需要遵循NSCoding协议,并实现encodeWithCoder方法和initWithCoder方法。具体参考http://my.oschina.net/u/1245365/blog/294449


值得一提的是,我发现类型为NSNull的空数据也是无法存入NSUserDefaults的。若数据中有NSNull类型空数据,把它置nil即可存入NSUserDefaults。


总之,NSUserDefaults是一种操作简单的数据库。


你可能感兴趣的:(ios NSUserDefaults使用注意事项)