[Swift] Enum 好用, Enum 可以更易用
发布时间:2020-12-14 06:30:33 所属栏目:百科 来源:网络整理
导读:Swift 中的枚举可以说好用到让我惊讶. 但是我可以让它更易用. 经典用例 比如 用它来封装 应用 微信的 Tab 栏枚举,如下: enum AppTab{ case wechat,contacts,discover,me} 到这里已经比用整型常量好很多了. 好了,现在你想将 UITabBarItem 中的构造封装在里面.
Swift 中的枚举可以说好用到让我惊讶. 但是我可以让它更易用. 经典用例比如 用它来封装 应用 微信的 Tab 栏枚举,如下: enum AppTab{ case wechat,contacts,discover,me } 到这里已经比用整型常量好很多了. 好了,现在你想将 UITabBarItem 中的构造封装在里面.
extension AppTab{ var title:String{ switch self { case .wechat: return "微信" case .contacts: return "通讯录" case .discover: return "发现" case .me: return "我" } } } 然后.就可以直接使用
extension AppTab{ var isWechat:Bool{ return self == .wechat } } 然后你想为所有的枚举值都加上这样的 Computed Property. 你复制粘贴然后修改.
extension AppTab{ static let allCases:[ AppTab] = [.wechat,.contacts,.discover,.me] } 动起来so far,so good. 那我可以帮到你什么呢? 我可以帮你少写代码. 怎么帮?
如下. AppTab wechat:微信 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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |