首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么NSUserDefaults无法在iOS中保存NSMutableDictionary?

在iOS中,NSUserDefaults无法直接保存NSMutableDictionary,因为NSUserDefaults只支持以下数据类型:NSData、NSString、NSNumber、NSDate、NSArray和NSDictionary。

如果需要保存NSMutableDictionary,可以将其转换为NSDictionary,然后再保存到NSUserDefaults中。

以下是示例代码:

代码语言:swift
复制
// 创建NSMutableDictionary
let mutableDict = NSMutableDictionary()

// 添加数据到NSMutableDictionary
mutableDict.setValue("value1", forKey: "key1")
mutableDict.setValue("value2", forKey: "key2")

// 将NSMutableDictionary转换为NSDictionary
let dict = mutableDict.copy() as! NSDictionary

// 保存NSDictionary到NSUserDefaults
UserDefaults.standard.set(dict, forKey: "myDictionary")

需要注意的是,NSUserDefaults并不适用于存储大量数据,因为它会将数据保存到设备的硬盘上,可能会影响性能。如果需要存储大量数据,建议使用其他存储方案,如Core Data或SQLite。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

iOS通过NSUserDefaults实现简单的应用间数据传递

iOSNSUserDefaults详解 NSUserDefaults是用于保存应用程序设置,应用信息等轻量级数据的的一个类,其本质是将数据写为plist文件的形式保存在本地。...IOS,系统为每一个应用程序都默认创建了一个NSUserDefaults对象。...二、三个特殊的域及实现简单的应用间信息传递 我们应该了解到,IOS,因为沙盒模式的存在,应用间是不允许互相访问数据与传值通信的。...]persistentDomainForName:NSGlobalDomain];     NSMutableDictionary * temDic = [NSMutableDictionary dictionaryWithDictionary...第二个工程,我们这样做:  NSDictionary * dic = [[NSUserDefaults standardUserDefaults]persistentDomainForName:NSGlobalDomain

84320

iOS数据持久化之一——plist文件 原

iOS数据持久化之一——plist文件         iOS开发,我们时常会将一些简单的数据进行持久化的存储,方便我们保存程序的一些配置和用户的一些数据,plist文件就是我们保存这些数据的最佳选择...一、何为plist         plist是一种文件格式,其内容规则是xml文件,后缀为.plist,因此,我们更习惯于成它问plist文件,iOS开发,这种文件常用来保存一些简单的配置数据,例如项目中的...二、通过操作plist文件进行数据持久化的几种方式 1、操作系统为我们准备的用户配置文件——NSUserDefaults         对于NSUserDefaults,具体用法和一些小技巧以前的一篇博客中有详细的描述...2、项目包手动创建一个plist文件,通过代码对其进行操作         这种方式创建的plist文件非常自由且直观,我们可以创建多个根据功能进行分类存储,并且可以通过Xcode的可视化工具进行可视化的修改...3、沙盒目录创建和使用plist文件         我们还可以通过代码沙盒中创建我们自己的plist文件,进行数据的存储。

93430

iOS集中和解耦网络:具有单例类的AFNetworking教程

然这个iOS应用程序架构微观层面上运行良好(应用程序的单个屏幕/部分),但随着应用程序的增长,你可能会发现自己多个模型添加了类似的功能。...在这个AFNetworking iOS教程,我将教你如何设置一个集中的单例联网对象,与微型MVC组件脱钩,可以整个解耦架构应用程序重用。 ?...一个好的程序员,使用ios应用程序架构最佳实践,知道使用哪些工具,为什么要使用它们,以及何时更好地从头开始编写自己的工具和类。...常见的低效实现可能包括: 多个网络请求一个视图控制器。 多个视图控制器几乎相同的请求导致分布式公共变量可能会失去同步。 对与该类无关的数据进行网络请求。...应用程序启动时,我们将检查是否保存了一个身份验证令牌,如果是,则执行一个GET请求到我们的API,以查看该令牌是否过期。

1.7K10

防护IOS APP安全的几种方式(详解)

1.URL编码加密 对iOS app中出现的URL进行编码加密,防止URL被静态分析 2.本地数据加密 对NSUserDefaults,sqlite存储文件数据加密,保护iOS app的帐号和关键信息...3.网络传输数据加密 对iOS app客户端传输数据提供加密方案,有效防止通过网络接口的拦截获取 4.方法体,方法名高级混淆 对iOS app的方法名和方法体进行混淆,保证源码被逆向后无法解析代码...5.程序结构混排加密 对iOS app逻辑结构进行打乱混排,保证源码可读性降到最低 一 .URL编码加密 1.背景介绍 a. iOS 下URL加解密,项目使用AFNetworking....虽然是使用HTTPS,但是从安全方面考虑,很多情况下还是需要对url的参数进行加密的. c. 不管是get请求还是post请求,都可以对后边的参数进行加密,这里说下post请求。...解密:先base64解密,然后AES128解密即可还原数据 3.加密代码 加密之前的代码 : NSMutableDictionary *para = [NSMutableDictionary dictionary

1.9K31

iOS微信第三方登录实现

(注意) 1、下载iOS微信SDK。 2、将SDK放到工程目录。 3、补充导入一些依赖框架。 4、添加URL Types 5、添加iOS9 URL Schemes....>NSAppTransportSecurity NSAllowsArbitraryLoads 如果我们iOS9...对于iOS应用,考虑到iOS应用商店审核指南中的相关规定,建议开发者接入微信登录时,先检测用户手机是否已经安装 微信客户端(使用sdk的isWXAppInstall函数),对于未安装的用户隐藏微信...对于iOS应用,考虑到iOS应用商店审核指南中的相关规定,建议开发者接入微信登录时,先检测用户手机是否已经安装 微信客户端(使用sdk的isWXAppInstall函数),对于未安装的用户隐藏微信...让AppDelegate遵守协议,并实现协议方法onResp: ,我们该方法接收请求回来的数据,如下: //授权后回调 /* http请求方式:GET // 根据响应结果

2.1K40

各种获取设备唯一标识的方法介绍

从2013年5月1日起,试图访问UIDIDs的程序将不再被审核通过,替代的方案是开发者应该使用“ios 6介绍的Vendor或Advertising标示符”。所以UDID是绝对是不能再使用了。...2.NSUUID NSUUIDiOS 6才出现,这跟CFUUID几乎完全一样,只不过它是Objective-C接口。+ (id)UUID 是一个类方法,调用该方法可以获得一个UUID。...为什么会使用它?iOS5之前,都是使用UDID的,后来被禁用。苹果推荐使用UUID 但是也有诸多问题,从而使用MAC地址。...如何正确的获取设备的唯一标识 我用的方法是将获取的UUID永久存储设备的KeyChain, 这个方法应用第一次启动时, 将获取的UUID存储进KeyChain, 每次取的时候, 检查本地钥匙串中有没有...需要将唯一标示保存到KeyChain,这样即便是应用卸载了,然后用户安装也是获取到的唯一的UUID。

2.8K20

GB代码规范1.0

(_ios) CF_AVAILABLE_IOS(_ios) 不建议的写法 #define NSAvailableIos(_ios) CF_AVAILABLE_IOS(_ios) 对象调用方法要留空格 建议的写法...内部声明的const 需要添加static 这个我觉得可以不加 但是无法看到苹果的实现 所以不知道苹果的规范怎么写的 建议写法 static NSStringInitCheckManger const...要先创建 因为我们用到NSUserDefaults无非是保存和读取 事先的创建一个对象 可以精简代码 当执行方法很多 用变量替换 建议的写法 NSUserDefaults *userDefault =...setObject:@() forKey:startLoadString] 不建议的写法 NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults...*dictionary = [NSMutableDictionary dictionary]; [dictionary setObject:object forKey:key]; 尤达表达式 推荐:

1.2K20

iOS相同IP,不同端口,session失效的问题

背景 公司https服务器(端口443)进行正常登陆业务等处理 https://ip1:443/ 然后端口444服务器进行资料文件上传等处理 https://ip1:444/ 因为服务器https...://ip1:443/登陆成功之后对cookie的session进行校验保存,而一旦出现访问443->444->443,就是进行文件上传操作后,再调用443端口后,服务器对session校验失败,出现会话超时问题...原因 因为session状态是靠cookie存储的jsessionid实现的,所以,由于两个服务器的sessionid,名称、域、路径都一样,导致sessionid被覆盖,从而导致session失效...cookie不区分端口号 cookie区分域、路径、名称 处理办法 访问另一个端口前,把cookie缓存到本地,然后返回443端口后,再把cookie重新写入 导出cookie并缓存: //导出cookie...standardUserDefaults]objectForKey:@"cookies"]; if(cookies.count>0) { NSMutableDictionary

1.9K30

获取到本地存储的数据:查看plist文件是否被清除

1.保存在user Document文件夹下,以读取文件,写入文件方式 2.工程里手动创建一个.plist文件,把固定的内容写入,这个需要人工手动写入(工程里只可读取,不可以写入) 3.保存在user...Document下,不过不需要读写文件,用系统的 NSUserDefaults 可以快速保存添加读取删除基本数据类型 这里记录的是第1种,第2种就是创建一个plist文件,然后自己手动写入数据,再用NSString...xiaoxi.plist"];      //    NSLog(@"------filepath---%@",filePatch);     /*      *      下面是我的plist路径,桌面空白处点击一下...",@"6",@"age",@"girl",@"sex",nil];          //将上面2个小字典保存到大字典里面     NSMutableDictionary *dataDic = [NSMutableDictionary...一开始保存时候的内容---%@",dataDictionary); 对plist文件内容进行/删除/修改/添加/写入操作  //修改字典里面的内容,先按照结构取到你想修改内容的小字典     NSMutableDictionary

99930

iOS学习——iOS常用的存储方式

不管是iOS还是Android开发过程,我们都经常性地需要存储一些状态和数据,比如用户对于App的相关设置、需要在本地缓存的数据等等。...根据要存储的的数据的大小、存储性质以及存储类型,iOS和Android哪个都有多种存储方式。...NSString *path = NSTemporaryDirectory(); NSLog(@"%@", path); 二、存储方式 文章的开始已经讲到了,iOS本地存储的方式一般有6种。...读取时使用arrayWithContentsOfFile:方法 2.2 preference(偏好设置) preefrence(偏好设置)顾名思义就是用户使用过程对App的一些状态和自定义设置状态的保存...归档iOS是另一种形式的序列化,只要遵循了NSCoding协议的对象都可以通过它实现序列化。

2.8K100

TIPS-为什么Power BI Desktop无法拷贝度量值?

不过,Power BI Desktop的建模中直接右键复制度量值可不会像在powerquery复制表那样容易实现: ? 所以只能是打开一个度量值然后复制内容: ?...粘贴到另一个新建度量值,修改名称和内容: ? 不过,不知道你有没有这种体验,10次有8次,粘贴的时候啥也没有?!! ? 啥原因呢?我们看下图: ?...颜色是深蓝色的话,代表着你可以复制和粘贴,而如果是浅颜色,那么就无法复制。...原因是,如果你按住鼠标左键选择度量值,当你松开左键时,鼠标指针仍然度量值输入框,它就是深蓝色的,也就可以复制;而如果指针已经不在这个度量值输入框内时,那么它就显示浅蓝色,代表不可复制。...其实很简单,就像黄渤出演过的一部电影《蛋炒饭》说的: ? 按住鼠标左键拖动复制度量值的时候,要慢一点,不要让光标离开输入框。

2K30

iOS常用的数据存储方式

一般存储体积大、不需要备份的非重要数据 5 Library/Preference: 保存应用的所有偏好设置,iOS的Settings(设置)应用会在该目录查找应用的设置信息。...,IOS的每个应用都有个NSUserDefaults实例,通过它来存取偏好设置。...Keychain是OS X和iOS都提供的一种安全存储敏感信息工具。 比如,我们可以Keychain存储用户名、密码等信息。...Keychain的特点如下: 1、保存在Keychain的数据,即使应用程序被卸载,数据仍然存在;重新安装应用程序,我们也可以从Keychain读取这些数据。...2、Keychain的数据可以通过Group的方式实现应用程序之间共享,只要应用程序具有相同的TeamID即可。 3、保存在Keychain的数据都是经过加密的,因此非常安全。

1.9K20

iOS应用数据存储(数据持久化)的常用方式一、iOS数据持久化方式二、应用沙盒(应用程序的文件夹)三、使用方法

寻找,NSCachesDirectory的话就是cache文件夹寻找 常用枚举: NSDocumentDirectory NSCachesDirectory 参数2: NSUserDomainMask...,例如:游戏进度、涂鸦软件的绘图 目录的文件会被自动保存在 iCloud 注意:不要保存从网络上下载的文件,否则会无法上架!...tmp: 保存临时文件,后续不需要使用 tmp目录的文件,系统会自动清理 重新启动手机,tmp 目录会被清空 系统磁盘空间不足时,系统也会自动清理 路径获取:NSString *tmp = NSTemporaryDirectory...(); Library/Caches: 保存临时文件,后续需要使用,例如:缓存图片,离线数据(地图数据) 系统不会清理cache目录的文件 就要求程序开发时,必须提供cache目录的清理解决方案...,使用 NSUserDefault直接读写,iOS的Settings(设置)应用会在该目录查找应用的设置信息。

2.5K70
领券