• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
耀舞风刃
爱生活,爱自己
博客园    首页    新随笔    联系   管理    订阅  订阅

IOS中数据持久化1-NSUserDefaults

 

重要的放开头,下面请注意:

 

NSUserDefaults的所有数据都放在内存里,因此操作速度很快,并还提供一个归档方法:+ (void)synchronize。开发者自定义的配置项(如图2中的最后一项 key:alkdjfkladsjfmm)会以plist格式的文件归档在相应应用目录的/Library/Preferences/[App_Bundle_Identifier].plist文件。再次初始化获得实例对象后,框架会把用户自定义的这个配置和系统配置合并得到完整数据。

 

这句话就是说 当你加载一次 NSUserDefaults后,他会把全部的数据都载入到内存里边,而且之后就是常驻内存了.

再想一想, 你辛辛苦苦折腾他了老半天,就为了节省那么一点内存,哪知道加载NSUserDefaults就会浪费些许内存,一旦你把大规模的数据全部存到NSUserDefaults,这样的结果可能是灾难性的!

 

所以,NSUserDefaults存储大量数据最好别用,还是去找sqlite 和CoreData比较好

 

数据持久化在编程中非常重要,这里我分别对IOS中常见的数据持久化方法做一下简单地总结.

NSUserDefaults使用起来还是很简单地就不多说了,这里有两篇篇很好地文章推荐一下:

http://blog.csdn.net/enuola/article/details/7959767

http://blog.csdn.net/lxinl/article/details/11770675

使用说明:

  1.NSUserDefaults只是一个很小的plist文件,适合存储轻量级的本地数据,不适宜存储大量数据,一般用来保存用户信息,偏好设置等小量数据.

  2.NSUserDefaults支持的数据格式有限,只支持简单地数据格式,具体有 NSNumber(Integer、Float、Double),NSString,NSDate,NSArray,NSDictionary,BOOL等常见类型,复杂对象就不能用它了.

  3.NSUserDefualts设计为单例模式,所以具有拿来即用的优点.  NSUserDefaults *userDefaults=[NSUserDefaults standardUserDefaults];

  4.存储数据:

     除NSNumber类型使用相对于的类型外,其他的都用setObject:forKey:

     简单地两个示例:

              [userDefaults setDouble:myDouble forKey:@"myDouble"];  

              [userDefaults setObject:myDictionary forKey:@"myDictionary"];  

             [userDefaults synchronize];                // 需要注意的是,NSUserDefaults是定时把缓存中的数据写入磁盘的,而不是即时写入,为了防止在写完NSUserDefaults后程序退出导致的数据丢失,可以在写入数据后使用synchronize强制立即将数据写入磁盘

   5.读取数据

    // 使用相应类型读取即可,示例如下,原理相同:

      NSInteger myInteger = [userDefaultes integerForKey:@"myInteger"];  

      NSString *myString = [userDefaultes stringForKey:@"myString"];

     

   //读取NSDate日期类型的数据  

    NSDate *myDate = [userDefaultes valueForKey:@"myDate"];  

    NSDateFormatter *df = [[NSDateFormatter alloc] init];  

    [df setDateFormat:@"yyyy-MM-dd HH:mm:ss"];  

    txtNSDate.text = [NSString stringWithFormat:@"%@",[df stringFromDate:myDate]]; 

   

   //读取字典类型NSDictionary类型的数据  

    NSDictionary *myDictionary = [userDefaultes dictionaryForKey:@"myDictionary"];  

    [mySettingDataR objectForKey:@"user_name"]

   //删除

   [mySettingData removeObjectForKey:@"arrItem"]; 

   // 删除所有保存信息

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

   [[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];  

    [userDefaults synchronize]; 

以上示例只是简单说明NSUserDefaults的使用方式.

posted @ 2014-10-28 14:35  耀舞风刃  阅读(212)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3