码迷,mamicode.com
首页 > 移动开发 > 详细

iOS 数据持久化之NSUserDefaults

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

标签:数据持久化   ios   extension   user   defaults   

原创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

标签:数据持久化   ios   extension   user   defaults   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!