问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Swift-细说枚举(Enum)

发布网友 发布时间:2022-11-07 05:40

我来回答

1个回答

热心网友 时间:2023-11-01 00:44

声明一个方向的枚举,包含四个枚举值: 东/西/南/北.

Swift 的枚举成员在被创建时本身就是完备的值,这些值的类型是已经明确定义好的 Direction 类型. 不会像 Objective-C 一样被赋予一个默认的整型值。在上面的 Direction 例子中,east、west 、north、south不会被隐式地赋值为 0,1,2 和 3。

Swift 中的枚举更加灵活,不必给每一个枚举成员提供一个值。如果给枚举成员提供一个值(称为原始值),则该值的类型可以是:字符串、字符、任意的整数值或浮点类型。

Swift的枚举类型提供了一个叫原始值(RawValues)的实现,它为枚举项提供了一个默认值,这个默认值在编译期间就是确定的。

通过原值值获取的枚举项是可选类型的,所以需要用if let 做一下判断。

未指定枚举值类型

隐式原始值

隐式原始值下枚举项使用系统的分配值:

显式原始值

隐式 + 显式原始值

这里使用了属性观察者,Swift里面的枚举更像一个对象,因此可以很方便的使用属性观察者对枚举值进行监听。

在 Swift 中,还可以定义这样的枚举类型,它的每一个枚举项都有一个附加信息,来扩充这个枚举项的信息表示,这又叫做关联值。

一定要学会使用关联值,这一点很重要。具体的使用后面的第九节会细说

通常情况下枚举是很容易进行相等判断的。一旦为枚举增加了关联值,Swift就没法正确的比较了,需要自己对该枚举实现 == 运算符。

借助 Comparable 协议,来实现枚举的比较。

遵守 CaseIterable 协议的swift枚举是可以遍历的,通过allCases获取所有的枚举成员.

app里面的接口地址,如果都放一起,命名或者寻找都不方便,可以用枚举的嵌套来设计。可以分散在多个文件中,方便维护和管理。

用枚举来管理系统里面的常量是一个不错的选择。

枚举中不能使用存储属性,但是可以使用计算属性,计算属性的内容是在枚举值或者枚举关联值中得到的。

在这里,可以认为枚举是一个类,introced是一个成员方法,AppleDeivce.iPhone 就是一个AppleDeivce的实例,case们是它的属性。introced里面的switch self,其实就是遍历这个匿名属性的所有场景,如iPad,iPhone等,然后根据不同的场景返回不同的值。

可以做枚举的自定义构造方法。

系统的打印协议

让枚举遵守这个协议

枚举可以进行扩展。可以将枚举中的case与method/protocol分隔开,阅读者可以快速消化枚举的内容。

设计一个网络类下的错误信息的处理功能。

在项目中经常使用 UserDefaults 来存储一下简单的用户信息。但是对 Key 的维护不会很方便。而且会想不起来。用枚举+结构体就能很好的解决这个问题。

这么设计APP的存储模块,是不是更有层级感,更加方便使用呢?

递归枚举是拥有另一个枚举作为枚举成员关联值的枚举。当编译器操作递归枚举时必须插入间接寻址层。可以在声明枚举成员之前使用 indirect关键字来明确它是递归的。 也可以声明在整个枚举前,让所有的枚举成员都是递归的。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
2017款 雪佛兰科鲁兹 手动 三厢先锋版 7.5万公里保养项目多少钱_百度知 ... 会计师是什么岗位 会计师是指什么级别 会计师属职务还是什么 08年的大众速腾车电保护瓶盖怎么拿下来 从西三旗桥东到鸟巢坐哪路公交车? 从小汤山疗养院怎么去鸟巢呀 从鸟巢到大兴区政府(海北路)怎么乘车? 从东小口坐多少路车能到鸟巢? 如何去除橡胶手套味道 SPRINGMVC如何显示字段的关联值 设置.bat文件的原始关联值! Towify制作小程序配置按钮时,如何对按钮设置特定关联值? loadrunner怎么调用关联值 有空调自启动的产品吗? 请问有没有空调自带自动启动功能 你好,请问一下。你们海尔5匹的调和3匹的空调都有那地是来电自动重启的? 形容女子气质高雅的句子 女孩学什么乐器有气质 女孩学哪些乐器有气质 清热解毒作用的十大水果排行榜 在相同预算下选择A7,A6300,80D哪个更好 显示器屏幕横条纹修复? 谁有Photoshopcc2015的序列号啊!急需,谢谢!!!谢谢!!! 什么是补胎?汽车补胎培训学习的主要内容是什么?学补汽车轮胎培训班在深圳那里? 一条轮胎,最多可以补几次? 到哪里学习轮胎修补/泰克轮胎修补ebdoor 汽车补胎培训要学多久? 台式电脑没有网卡可以上网吗? 台式机没有网卡上网的方法 苹果ipad的id号怎么注册不了 c#枚举中的关联值有什么用 - 3,-1,2的关联值 EXCEL怎么在关联数值? mfc动态控件关联值变量的问题 面试过程中的礼仪规范 搜索电影名称 一部美国老电影 讲的是三位橄榄球比赛预判职业经理人在摄像机前大夸奇谈想吸引人们找他投资 飞行术口诀是什么? 谁一气化三清,化的是哪三清?太上老君还有哪两位 中科建设开发总公司是传销吗 雅思口语报名排队中是什么意思 凌波微步,罗袜生尘 ip1980打印机怎么安装啊 求6000左右的笔记本,主要用于编程~ 几路到大龙港新村的? 苏州 大龙港新村怎么样? 苏州市吴中区大龙新村28幢属于什么乡镇 苏州大龙港新村属于什么街道 苏州市拆迁计划大龙港新村有几幢要动迁有这个意图吗? 苏州市拆迁计划大龙港新村有 从苏州大龙港到苏州北站乘几路?(公交车) 觉醒年代观后感800字 觉醒年代800字观后感