iOS 数据持久化之NSUserDefaults

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

时间: 2024-08-07 21:13:24

iOS 数据持久化之NSUserDefaults的相关文章

IOS数据持久化之NSUserDefaults

NSUserDefaults: 用来保存应用程序设置和属性.用户保存的数据.              用户再次打开程序或开机后这些数据仍然存在.              可以存储的数据类型包括: NSData.NSString.NSNumber.NSDate.NSArray.NSDictionary.             如果要存储其他类型,则需要转换为前面的类型,才能用NSUserDefaults存储. 代码如下: //保存数据 NSUserDefaults * defaults =

iOS数据持久化存储

本文中的代码托管在github上:https://github.com/WindyShade/DataSaveMethods 相对复杂的App仅靠内存的数据肯定无法满足,数据写磁盘作持久化存储是几乎每个客户端软件都需要做的.简单如"是否第一次打开"的BOOL值,大到游戏的进度和状态等数据,都需要进行本地持久化存储.这些数据的存储本质上就是写磁盘存文件,原始一点可以用iOS本身支持有NSFileManager这样的API,或者干脆C语言fwrite/fread,Cocoa Touch本身

IOS数据持久化之归档NSKeyedArchiver

IOS数据持久化的方式分为三种: 属性列表 (自定义的Property List .NSUserDefaults) 归档 (NSKeyedArchiver) 数据库 (SQLite.Core Data.第三方类库等) 下面主要来介绍一个归档NSKeyedArchiver. 归档(又名序列化),把对象转为字节码,以文件的形式存储到磁盘上:程序运行过程中或者当再次重写打开程序的时候,可以通过解归档(反序列化)还原这些对象. 归档方式: 对Foundation框架中对象进行归档 对自定义的内容进行归档

iOS数据持久化之二——归档与设计可存储化的数据模型基类

iOS数据持久化之二--归档与设计可存储化的数据模型基类 一.引言 在上一篇博客中,我们介绍了用plist文件进行数据持久化的方法.虽然简单易用,但随着开发的深入,你会发现,这种方式还是有很大的局限性.试想,如果我们可以将用户的登录返回信息模型,游戏中角色的属性信息模型进行直接的持久化存取,那是不是非常爽的事,幸运的是,我们可以通过归档,来设计一个这样的数据模型. 二.先来精通归档吧 归档也是iOS提供给开发者的一种数据存储的方式,事实上,几乎所有的数据类型都可以通过归档来进行存取.其存储与读取

iOS开发笔记-swift实现iOS数据持久化之归档NSKeyedArchiver

IOS数据持久化的方式分为三种: 属性列表 (plist.NSUserDefaults) 归档 (NSKeyedArchiver) 数据库 (SQLite.Core Data.第三方类库等 归档(又名序列化),把对象转为字节码,以文件的形式存储到磁盘上:程序运行过程中或者当再次重写打开程序的时候,可以通过解归档(反序列化)还原这些对象.本文主要介绍swift实现iOS数据归档. 归档Foundation框架对象 func archiveData(){ var path: AnyObject=NS

iOS -数据持久化方式-以真实项目讲解

前面已经讲解了SQLite,FMDB以及CoreData的基本操作和代码讲解(CoreData也在不断学习中,上篇博客也会不断更新中).本篇我们将讲述在实际开发中,所使用的iOS数据持久化的方式以及怎么会使用到这些方式,都会以本人实际开发的场景为例,大约需要花10-15分钟,欢迎大家指正. 一.前言 和大家说一个真实故事,前年我去美图面试(当时的技术仅仅是UI和接口的实现,并不注重很多底层实现和很多概念的原理,换句话说,就是真正的码农),过了技术第一轮和第二轮(前两年的也就是问问技术点的实现),

iOS数据持久化方式分析

iOS数据持久化的方式一般为:plist文件写入.对象归档.SQLite数据库.CoreData. plist文件写入.对象归档一般用于小的数据量. SQLite数据库.CoreData则用于大的数据量. SQLite是一款轻型的数据库,是一种关系型数据库管理系统,他的设计目的是嵌入式设备中使用. SQLite占用资源非常低,非常适合移动设备中使用,而且是开源免费的 SQLite的数据库操作其实和常规的数据库操作流程是一样的: 1.打开数据库 sqlite3_open() 2.准备SQL语句,采

IOS数据持久化之归档NSKeyedArchiver, NSUserDefaults,writeToFile

//2.文件读写 //支持:NSString, NSArray , NSDictionay, NSData //注:集合(NSArray, NSDictionay)中得元素也必须是这四种类型, 才能够进行文件读写 //string文件读写 NSString *string = @"假如给我有索纳塔"; //Document NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUs

iOS数据持久化(一、NSUserDefaults)

NSUserDefaults适合存储轻量级的本地数据,比如要保存一个登陆界面的数据,用户名.密码之类的,个人觉得使用NSUserDefaults是首选(需要加密的登录信息请略过).下次再登陆的时候就可以直接从NSUserDefaults里面读取上次登陆的信息咯. 因为如果使用自己建立的plist文件什么的,还得自己显示创建文件,读取文件,很麻烦,而是用NSUserDefaults则不用管这些东西,就像读字符串一样,直接读取就可以了. NSUserDefaults支持的数据格式有:NSNumber