首页 > 移动平台 > 详细

iOS 数据持久化之NSUserDefaults

时间:2015-04-27 13:14:27      阅读:180      评论:0      收藏:0      [点我收藏+]

原创Blog,转载请注明
blog.csdn.net/hello_hwc


前言:iOS的数据持久化存储分为很多种

  • 普通文件,plist
  • NSUserDefaults
  • CoreData
  • KeyChain

本文讲解NSUserDefaults的使用


StandardUserDefaults

大部分的时候使用StandardUserDefaults来保存数据,这是一个共享的UserDefaults,意味着在程序的任意一个地方访问到的都是同一个UserDefaults
写数据
swift代码

        var userdefaults = NSUserDefaults.standardUserDefaults()
        userdefaults.setBool(true, forKey: "KEYBOOL")
        userdefaults.setObject("String", forKey: "KSTRING")

注意,上面的代码写入的数据,并不会立刻同步到文件里,而是保存在cache中,这样做提升速率(文件IO的效率很低)。如果要立刻同步

        userdefaults.synchronize()

如果不是非常有必要同步到数据库里,建议不要每次写入都调用同步方法,因为相对来说,它实在是很慢。

读出数据

            var str = userdefaults.objectForKey("KSTRING") as? String
            var bool =  userdefaults.boolForKey("KEYBOOL")

为app group服务的UserDefaults

这样的UserDefaults是共享的,在以下两种情况下使用

  • app suite,也就是说两个app之间需要共享数据
  • app extension,在extension和他的contain app之间共享数据。典型的是输入法程序,在contain app里设置以后,键盘的样式就会改变。

如何使用-以extension为例
在contain app写入数据

OC代码

NSUserDefaults *shared = [[NSUserDefaults alloc]initWithSuiteName:@"group.yourcompanyname.yourappname"];
    [shared setObject:your dic forKey:@"KDICFORWIDGET"];
    [shared setObject:@"1234" forKey:@"KSTRINGFORWIDGET"];
    [shared synchronize];

在extension读数据

NSUserDefaults *shared = [[NSUserDefaults alloc]initWithSuiteName:@"group.yourcompanyname.yourappname"];
NSMutableDictionary *dic = [shared objectForKey:@"KDICFORWIDGET"];
NSString *str = [shared objectForKey:@"KSTRINGFORWIDGET"]

iOS 数据持久化之NSUserDefaults

原文:http://blog.csdn.net/hello_hwc/article/details/45308557

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!