Swift中非文字值的枚举
有没有办法将像字典元组这样的非文字值映射到枚举?以下代码将为枚举抛出Raw值必须是文字.
enum FileType { case VIDEO = ["name": "Video","contentTypeMatcher": "video/"] case IMAGE = ["name": "Image","contentTypeMatcher": "image/"] case AUDIO = ["name": "Audio","contentTypeMatcher": "aduio/"] case PDF = ["name": "PDF","contentTypeMatcher":"application/pdf"] case TEXT = ["name": "Text","contentTypeMatcher": "text/"] case FOLDER= ["name": "Folder","contentTypeMatcher" :"application/x-directory"] case PLAIN = ["name": "Plain","contentTypeMatcher": ""] } 当我使用元组时,它是一样的: enum FileType { case VIDEO = (name: "Video",contentTypeMatcher: "video/") case IMAGE = (name: "Image",contentTypeMatcher: "image/") case AUDIO = (name: "Audio",contentTypeMatcher: "aduio/") case PDF = (name: "PDF",contentTypeMatcher:"application/pdf") case TEXT = (name: "Text",contentTypeMatcher: "text/") case FOLDER = (name: "Folder",contentTypeMatcher :"application/x-directory") case PLAIN = (name: "Plain",contentTypeMatcher: "") }
在谈到
Enumeration Declaration时,语言参考明确指出:
除了文字之外别无其他可以用作原始值. 一种可能的解决方法是将字典表示为字符串 – 例如,您可以使用逗号分隔元素,使用冒号来键入值: enum FileType : String { case VIDEO = "name:Video,contentTypeMatcher:video/" case IMAGE = "name:Image,contentTypeMatcher:image/" ... } 然后,使用计算属性(或您喜欢的方法),重建字典: var dictValue: [String : String] { var dict = [String : String]() var elements = self.rawValue.componentsSeparatedByString(",") for element in elements { var parts = element.componentsSeparatedByString(":") if parts.count == 2 { dict[parts[0]] = parts[1] } } return dict } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |