Swift 中的枚举可以说好用到让我惊讶. 但是我可以让它更易用.
经典用例比如 用它来封装 应用 微信的 Tab 栏枚举,如下:
enum AppTab{ case wechat,contacts,discover,me}
到这里已经比用整型常量好很多了. 好了,现在你想将 UITabbarItem 中的构造封装在里面.
首先我们为其添加一个Title
属性,如下: extension AppTab{ var Title:String{ switch self { case .wechat: return "微信" case .contacts: return "通讯录" case .discover: return "发现" case .me: return "我" } }}
然后.就可以直接使用 .Title
就可以访问了. 避免了 使用字典保存映射的麻烦. 写法,修改也简单.
if tab == .wechat
嗯,Swift 中可以直接写 .wechat
这样的枚举值真方便. 但是你也可以这样. 添加一个 Bool 类型的 Computed Property. extension AppTab{ var isWechat:Bool{ return self == .wechat }}
然后你想为所有的枚举值都加上这样的 Computed Property. 你复制粘贴然后修改.
很多时候,你想遍历枚举值,于是你添加了一个静态属性.保存所以的枚举值为一个数组. 如下:extension AppTab{ static let allCases:[ AppTab] = [.wechat,.contacts,.discover,.me]}动起来
so far,so good. 那我可以帮到你什么呢? 我可以帮你少写代码. 怎么帮?
只需要写少量的几行声明:如下.
AppTabwechat:微信contacts: 通讯录discover:发现me:我
选中,右键,选择 "Services|generate_enum" 然后如下代码就自动生成了:
//AppTab//wechat:微信//contacts: 通讯录//discover:发现//me:我enum AppTab { case wechat,me var isWechat:Bool{ return self == .wechat } var isContacts:Bool{ return self == .contacts } var isdiscover:Bool{ return self == .discover } var isMe:Bool{ return self == .me } var Title:String{ switch self{ case .wechat:return "微信" case .contacts:return " 通讯录" case .discover:return "发现" case .me:return "我" } } static let allCases:[AppTab] = [.wechat,.me]}
怎么样? 来试试吧! 当然还有其他选项可以使用. 如果你有其他需要麻烦告诉我. 当然有 PR 最好了.
最后来张动图感受一下:
代码在:OSC Git
Github
总结以上是内存溢出为你收集整理的[Swift] Enum 好用, Enum 可以更易用全部内容,希望文章能够帮你解决[Swift] Enum 好用, Enum 可以更易用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)