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

嵌套的枚举可以保存在UserDefaults中吗?

嵌套的枚举可以保存在UserDefaults中。UserDefaults是iOS中的一种持久化数据存储方式,可以用于保存应用程序的配置信息、用户偏好设置等。当需要将嵌套的枚举保存到UserDefaults中时,可以通过将其转换为原始值进行存储。

首先,需要确保嵌套的枚举的每个成员都具有原始值。原始值可以是整数、字符串或其他原始值类型。然后,可以使用UserDefaults的set方法将嵌套的枚举存储为原始值。例如,假设有以下嵌套的枚举:

代码语言:swift
复制
enum OuterEnum: String {
    case innerCase1
    case innerCase2
}

enum NestedEnum: String {
    case case1
    case case2
    case case3(OuterEnum)
}

要将NestedEnum保存到UserDefaults中,可以使用以下代码:

代码语言:swift
复制
let nestedEnumValue = NestedEnum.case3(.innerCase1)
UserDefaults.standard.set(nestedEnumValue.rawValue, forKey: "nestedEnumKey")

在这里,我们将NestedEnum的case3(.innerCase1)转换为其原始值"case3.innerCase1",然后使用UserDefaults的set方法将其存储在键"nestedEnumKey"下。

要从UserDefaults中检索嵌套的枚举值,可以使用UserDefaults的value方法,并将其转换回嵌套的枚举类型。例如:

代码语言:swift
复制
if let rawValue = UserDefaults.standard.string(forKey: "nestedEnumKey"),
   let nestedEnumValue = NestedEnum(rawValue: rawValue) {
    // 使用嵌套的枚举值
    print(nestedEnumValue)
}

在这里,我们从UserDefaults中检索键"nestedEnumKey"的值,并将其转换回NestedEnum类型的嵌套枚举值。

腾讯云相关产品和产品介绍链接地址:

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

相关·内容

如何在JavaScript访问暂未存在嵌套对象

JavaScript 是个很神奇东西。但是 JavaScript一些东西确实很奇怪,让人摸不着头脑。...user.personalInfo.name : null; 如果你嵌套结构很简单,这是可以,但是如果数据嵌套五或六层深,那么你代码就会看起很混乱: let city; if ( data...做法是检查用户是否存在,如果不存在,就创建一个空对象,这样,下一个级别的键将始终从存在对象访问。 不幸是,你不能使用此技巧访问嵌套数组。...除了安全访问嵌套对象之外,它还可以做很多很棒事情。...但是在轻量级前端项目中,特别是如果你只需要这些库一两个方法时,最好选择另一个轻量级库,或者编写自己库。

8K20
  • UserDefaults 浅析及其使用管理

    我想每一个 iOSer 对UserDefaults都有所了解,但大家真的完全了解它?下面,我谈谈我对UserDefaults看法。 同时,这也应该是 iOS 持久化方式系列开篇文章了。...下面介绍两种UserDefaults使用管理两种方式。 protocol 利用 Swift protocol可以有默认实现特性,可以UserDefaults进行有效管理。.../// 定义枚举,统一管理 UserDefaults所有key enum UserInfoEnum: String { case name case age } extension...示例,协议默认实现为 UserDefaults.standard /// 如果想存储在另外plist文件,便可以单独实现 var userDefaults: UserDefaults...@propertyWrapper Swift 5.1 推出了为 SwiftUI 量身定做@propertyWrapper关键字,翻译过来就是属性包装器,有点类似 java 元注解,它推出其实可以简化很多属性存储操作

    1.1K10

    PowerBI切片器可以带个度量值

    近日在给客户完善报告时,客户对以下切片器并不是很满意: ? 他想是”如果能在切片器显示每个地区城市数量就好了“。就像这样: ? 安排!...首先在地区表添加一列: 城市数量 = CALCULATE(DISTINCTCOUNT(data[城市])) 然后再添加一列: 地区(城市数量) = [地区]&"("&[城市数量]&")" ?...然后将数据表地区列和地区表地区列建立关系: ? 然后将地区(城市数量)一列作为切片器: ? 每次报告刷新时,新建列也同样会进行更新,所以切片器数据是及时准确。...本以为用户可以很满意了,不过甲方就是甲方,继续提出了几个问题: 1.能不能按照城市数量由多到少排序? 2.如果我还有其他切片器,能否随着其他切片器变化呢?...比如西北地区销售”桌子“城市有15个,能否在产品类型选择”桌子“时,地区切片器中西北后括号里显示15呢? 尝试了一番,没有找到解决方案,尴尬。 甲方虐我千万遍,我待甲方如初恋。

    2.5K40

    面试真的存在靠面相眼神就可以offer么

    我们在极限挑战 等综艺看到过 现实 心理学专家,面部微表情专家,各种神乎其神 推断,准确度高达100%。 所以,当这种技术应用在面试 会是什么样呢?...我觉得我个人很小时候就有一种特异功能,就是可以通过照片上眼神,判断出这个人学习好不好,智商有多高。...3.我在我当面试官漫长过程,曾经凭眼神就录取了一位同学,全程我几乎什么问题,什么算法都没问。因为那个眼神不是一般人可以发出精明,聪慧,充满求知欲和因为长期优秀不屑,还有一些无敌寂寞。...面试官价值难道仅仅是负责发答题卡然后收卷子么?所以一个优秀面试官,可以通过有限问题来探出应聘者技术功底 深度和广度。越有经验面试官,问问题也就越少。...他没有再去问真实技术问题也知道你回答如何。这样另一个好处就是可以避免菜鸟通过培训机构填鸭式教学所出现面试对答入流,入职啥也不行情况。

    35610

    卧槽,Java可以这么写,秀飞起

    今天在看python相关东西,看到各种骚操作,回头想了下Java有没有什么骚操作,整理下面几种,一起看一下吧 1、try with catch 还记得这样代码?...如果需要声明多个资源,可以在try后面的(),以;分隔;也就是说,try后边()可以添加多行语句, 我上篇文章有展示:《保姆系列五》原来JavaIO如此简单,惊呆了 2、instance of 对象是否是这个特定类或者是它子类一个实例...格式如下: 参数个数可以0或者多个 public void method(int...args); 业务场景: 1、在业务开发时候经常之前写一个方法,但是后来业务变动了,需要增加参数,这个时候可以使用这种方式...Java 标签是为循环设计,是为了在多重循环中方便使用 break 和coutinue ,当在循环中使用 break 或 continue 循环时跳到指定标签处 public static...5、方法引用 用Lambda表达式仅仅是调用一些已经存在方法,除了调用动作外,没有其他任何多余动作 ?

    76930

    .NETstring类型可以作为lock锁对象

    string类型可以作为lock锁对象,需要朋友可以参考下。...lock 关键字介绍 lock 关键字是用于在多线程编程实现同步和互斥访问关键字。...当多个线程同时访问共享资源时,如果没有合适同步机制,可能会导致数据损坏、结果不确定性或其他不可预测行为。 使用 lock 关键字可以解决这个问题。...因为值类型是每个实例独立存在,它们在内存具有不同地址,这样就无法确保多个线程之间共享同一个锁对象。 使用引用类型作为锁对象可以解决这个问题。...多个线程可以通过使用相同引用对象来获取锁控制权,并且只有一个线程能够成功获取锁,其他线程将被阻塞。这样,就实现了所谓互斥访问,确保了线程安全。

    18310

    Java 接口还可以这样用,你知道

    Java 程序员都知道要面向接口编程,那 Java 接口除了定义接口方法之外还能怎么用你知道?今天阿粉就来带大家看一下 Java 接口还可以有哪些用法。...default方法存在目的是,在我们已经完善项目中,如果我们直接给一个接口增加一个方法,在没有默认方法时候就需要给所有的实现类都实现对应方法,但是这个方法又不一定是每个实现类都需要,所以这个时候默认方法就很好解决了这个问题...通过源码我们可以知道 RandomAccess 是用来标识子类是否实现了该接口,如果实现了则走实现了逻辑,没有实现就走没有实现逻辑,所以我们在日常开发可以利用这个特性,当我们有不同子类需要根据情况进行不同实现逻辑时候就可以采用定义一个空接口来标记一下...静态方法 跟默认方法一样,JDK 8 还支持在接口中增加静态方法,虽然说在接口中定义静态方法做法不常见,但是当需要使用时候也是可以支持,避免在创建一个单独工具类,跟在类定义静态方法一样,我们可以直接通过接口名称引用静态方法...总结 今天阿粉给大家总结了一个接口使用方法,后面在日常开发我们不单单只是在接口中定义抽象方法,也可以根据需求增加默认方法或者私有方法,以及在需要用到标记时候也可以通过定义一个空接口来实现,怎么样是不是很棒

    64320

    业务用例研究组织可以在同一个建设系统可以变化

    2013-02-08 9:44:15 上孙安俊(359***041) 请问大家一个问题,业务用例研究组织可以在同一个建设系统可以变化?...2013-02-08 9:44:51 潘加宇(3504847) 没有必要变化了 2013-02-08 9:46:55 潘加宇(3504847) 这个划定范围,能把你要改进场景被包在里头就可以。...2013-02-08 9:51:42 潘加宇(3504847) 部门就可以了,把这些场景组织到部门用例下面 2013-02-08 9:54:44 潘加宇(3504847) 既然改进范围波及整个部门,...2013-02-08 10:14:41 上李帅(958**7) 意味着缺少了资源 2013-02-08 10:25:47 上孙安俊(359***041) 请假与加班是相对可以进行调休 2013-02...2013-02-08 11:11:15 潘加宇(3504847) 请假本身不是部门用例,但会影响部门某些用例实现,把请假作为一个场景放在这些用例下面。

    2.7K30

    mybatismapper文件一个标签是否可以写多条SQL语句?是否存在事物?

    mybatismapper文件一个标签是否可以写多条SQL语句?是否存在事物? 这篇博文由来,朋友面试遇到两个问题?...第一个问题是mybatismapper文件一个标签是否可以写多条SQL语句? 第二个问题是上述问题如果成立,那么这个标签内是否存在事物?...数据库事物四大特性 回顾知识: ACID 原子性、一致性、隔离性、持久性 问题答案 第一问题:mybatismapper文件一个标签可以写多条SQL语句 第二问题:标签存在事物 验证答案 一...: url: jdbc:mysql://XXX.XXX.XXX.XXX:XXX/XXXX 这样默认是不能实现mybatismapper文件一个标签可以写多条SQL语句,会报异常: Error updating...通过查看数据库表数据,第一条语句成功执行了,第二条和第三条语句都没有执行成功,说明mybatismapper文件一个标签执行多条SQL语句时,不存在数据库事物 [171fa32e5107ff72?

    2.6K00

    【实测】网络可以传小于64字节数据包

    从而保证了互联网上可以有效传输小于64字节报文。上述内容来源于网络,如有侵权,请联系我删除。网上有很多很多讨论为什么以太网帧最短帧为64字节文章,大家可以自行百度。...从MAC1发出,经过PHY1芯片,经过双绞线和MAC2PHY2芯片,可以在MAC2RGMII接口处收到。 ? 仿真及上板结果如下: ?...可以看到在数据帧长度不符合标准时候,是没有办法通过MAC2mac核,但是能够到达接收端rgmii_rx部分。...经检查,发现开源IP核接收数据文件mac_rx_ctrl.v对接收到数据帧进行了长度判断,把不满足64字节数据帧给过滤掉了。 ?...LTU限制改为34, payload=34-4=30,由于接收控制最小帧长信号是在寄存器组里配置,所以对需要在reg_init更改。 修改完之后,在MAC2处即能接收到40字节以太网帧了。

    3.5K30

    date类和calendar类区别_java类可以定义类

    get方法,可以获得Date类对象相关信息,需要注意是使用getYear获得是Date对象中年份减去1900以后值,所以需要显示对应年份则需要在返回值基础上加上1900,月份类似。...); System.out.println(d4); 使用Date对象getTime方法,可以将Date类对象转换为相对时间,使用Date类构造方法,可以将相对时间转换为...如果只设定某个字段,例如日期值,则可以使用如下set方法: public void set(int field,int value) 在该方法,参数field代表要设置字段类型...get方法可以获得Calendar对象对应信息,get方法声明如下: public int get(int field) 其中参数field代表需要获得字段值,字段说明和上面的...1、计算两个日期之间相差天数 例如计算2010年4月1号和2009年3月11号之间相差天数,则可以使用时间和日期处理进行计算。

    1.3K20

    IOS开发之记录用户登陆状态

    之前在用PHP或者Java写B/S结构东西时候,我们用Session来存储用户登陆信息,Session是存在服务器上仅在一次回话中有效,如果要记录用户登陆状态,那么会用到一个叫Cookie东西...Cookie和Session不同,Cookie是存在用户本地一个文件,Cookie就是用户登陆信息,当用户在此登陆时,自动从Cookie读取用户登陆信息。   ...那么我们有其他更便捷方法?苹果这么注重用户体验,当然有其他方法了,就是NSUserDefault....= [NSUserDefaults standardUserDefaults];           //移除UserDefaults存储用户信息     [userDefaults removeObjectForKey...,运行出效果和下面一样,到此我们就可以实现记录用户登陆状态了 ?

    1.6K90

    Elasticsearch 配置文件 path.data 可以配置多个数据目录路径

    1、企业级实战问题 Elasticsearch 配置文件里面的 path.data: 可以配置多个数据目录路径?...——来自死磕Elasticsearch知识星球微信群 2、7.13.0 之前版本可以配置多路径 多数据路径支持在7.13.0 + 版本已被弃用。...在Elasticsearch,管理和监控数据迁移进度以及分析任何可能迁移问题时,可以使用两个有用API: GET _cat/allocation 和 GET _cluster/allocation...步骤4:节点关闭与数据清理:按照滚动重启步骤,关闭目标节点,并清理其数据路径数据。..._name": null } } 通过上述策略,可以有效地从使用多数据路径配置过渡到更稳定和可维护单数据路径配置,同时最小化迁移过程风险和中断。

    30410

    味觉可以被识别?脑机接口在味觉感知新应用

    而特定食物刺激(酸、甜、苦、咸、鲜)大脑责任区是稳定不变,因此使用脑机接口(BCI)系统可以从神经信号解码出味觉信息。...我们味觉细胞分布在口腔不同部位,对各种味觉刺激作出反应,包括舌头、咽、软腭、喉部和会厌。这些味觉细胞以味蕾形式存在,每个味蕾中大约有60-100个感受器细胞。...对味觉刺激MEG信号分析大多为时频分析,研究发现甜味刺激容易引发低频信号而咸味刺激容易引发高频信号,还有人发现四种味觉刺激对α节律诱导效应存在性别差异。...不单是年龄,研究发现女性对味觉感知优于男性,男性在味觉识别上错误也更多,MEG分析发现男性和女性对甜味和苦味味觉反应存在明显差异,所以女性比男性表现出更多味觉反应,此外,年龄引起味觉障碍在男性也更常见...当行业为特定受众(比如老奶奶人)设计/开发食品时,通过BCI技术可以从特定客户群体收集最直观感官体验数据,相比传统数据收集手段,这种方式更高效且在消费群体接受度更高,且对直观信号(神经活动)

    2.9K20

    你知道,Java受查和非受查异常,其实并不存在区别……

    博主在文章中提到Java受查异常和非受查异常之间区别在JVM世界实际上并不存在。...最后,文章提到Java受查异常机制存在争议,而Kotlin作为一种新JVM语言,避免了这一问题。 你知道,Java受查和非受查异常,其实并不存在区别.........相信写过 Java 的人都会知道,在 Java 异常系统存在“受查(checked)”异常和“非受查(unchecked)”两座大山,两者虽然均为异常,但是却有着微妙区别。...但是你知道,实际上在 JVM 世界里,这种区别根本不存在.........对小型程序检查得出结论是,要求异常规范既可以提高开发人员生产力,又可以提高代码质量,但大型软件项目的经验表明了不同结果——生产力下降,代码质量几乎没有提高。

    10410

    iOS 面向协议方式封装空白页功能

    嘿嘿,这个可以有,那我们接下来就来试试怎么通过协议方式来避免上述情况,并且实现一行代码添加空白页功能 前言 如果对面向协议有疑问同学可以看下我之前两篇文章 iOS - Swift 面向协议编程...我们现在目的就是让目标控制器或者目标视图在遵守我们协议后,就可以有实现空白页功能。... 回到刚刚的话题,使用UserDefaults来实现可以?...可以,但是比较麻烦,因为UserDefaults是单例,整个进程共用这一份资源,如果你当前controller遵守了我们协议LXFEmptyDataSetable并做出了定制,那么当下一个controller...1、定义定制相关枚举 这里我定义了常用定制相关枚举 public enum LXFEmptyDataSetAttributeKeyType { /// 纵向偏移(-50) CGFloat

    1.4K50
    领券