首页 > 解决方案 > 如何将枚举用于类函数

问题描述

我正在做一个项目,我创建了一个类来处理 json 响应以将其转换为模态类,并在需要时将其更改回带有更新数据的 json 请求。

在课堂上,我正在从字典中获取值并将其保存到字典中。我需要为字典键创建一个枚举,以便复杂键格式出错的机会更少。

我什至尝试使用like

enum Fields {
   case Name
   case Email
}

但是 Fields.Email 返回 Fields 对象

如果我使用一个变量的协议,比如

protocol someProtocol {
      var name: String { get }
}

extension someProtocol {
     var name:String {
         return String(describing: self)
     }
}

然后扩展enum Fields:someProtocol 然后我可以像使用它一样Fields.name.name or Fields.email.name

但是我的客户不会批准这个我想创建一个枚举,这样我就可以直接访问字符串,就像我想要键“Name”一样,我应该得到它,比如“Fields.name”或“.name”

所以在这里我有两个目标

——</p>

class PersonService {
    class Update {
        var name = ""
        var email = ""
        var personId = 0

        func createDataFrom(dic:[AnyHashable : Any]) -> Update {
            let update = Update()

            update.name = dictionary["Name"]
            update.email = dictionary["Email"]
            update.personId = dictionary["Id"]

            return update
        }

        func createDataTo() -> [AnyHashable:Any] {
            var ret = [AnyHashable : Any]()

            ret["Name"] = name
            ret["Email"] = email
            ret["Id"] = personId

            return ret
        }
    }
}

标签: swiftdictionaryenums

解决方案


类似的东西?

enum Fields: String {
   case Name = "Name"
   case Email = "Email"
}
Print(Fields.Name.rawValue)
result: "Name"

或者

struct Constants {
    static let name = "Name"
    static let email = "Email"
}
print(Constants.name)
result: "Name"

推荐阅读