NSUserDefaults 的坑知道吗?

这几天,恰好用到一个NSUserDefaults 保存少量数据,但是这个方法有点恶心,如果不留心很有可能存在坑。这个方法,简单方便,具体的优点我不说了,可以查阅苹果对NSUserDefaults的介绍

先说下NSUserDefaults 的用法:

iOS下可以使用NSUserDefault、NSKeyedArchiver、sqlite、CoreData几种常用的方式来存储数据,其中NSUserDefaults用来存储类似用户的配置等这些的数据,后两者用户存储大批量和比较复杂的数据。

NSUserDefault 基本上支持所有的原生数据类型NSString、 NSNumber、NSDate、 NSArray、NSDictionary、BOOL、NSInteger、NSFloat等等。如果要存放自定义的对象(如自定义的类对象),则必须将其转换成NSData存储。

1.存储

        //dw

        NSUserDefaults *userDef =[NSUserDefaults standardUserDefaults];

        [userDef setObject:nn forKey:@"poiPosition"];

        [userDef synchronize]; //这句其实很有必要,如果没有这句,再加上xcode的坑爹调试,可能会导致没法存储,没法读取,

//昨天我就死活取不到数据,但是今天又可以了,同样的代码。(所以我怀疑xcode有点坑在这,大家只要加上这句,拿不到数据,九成是xcode本身的坑)

2.读取:

   NSUserDefaults *userDef = [NSUserDefaults standardUserDefaults];

    NSString *nu = [userDef objectForKey:@"poiPosition"];


【总结】

实际上, [userDef synchronize]; 这句的作用是同步磁盘的数据的, 这句在使用NSUserDefault会被自动调用,但是,很可能不会立即就调用到,

而如果你是遇到和我此处类似的,改动数据后,就退出程序了,即在NSUserDefaults还没来得及synchronize之前就退出程序,就需要手动调用synchronize去保存数据了。




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值