Я работаю над проектом и создал класс для обработки ответа json, чтобы преобразовать его в модальный класс и изменить его на запрос json с обновленными данными, если это необходимо.
Здесь, в классе, я получаю и сохраняю значения из словаря. Мне нужно создать перечисление для ключей словаря, чтобы было меньше шансов на ошибку для сложных форматов ключей.
Я даже пытался использовать как
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
Но мой клиент не одобрит это. Я хочу создать перечисление, чтобы я мог получить доступ к строке напрямую, как для имени. Мне нужен ключ «Имя», и я должен получить его как «Fields.name» или «.name»
Итак, здесь у меня две цели
- сначала нужно создать что-то, к чему можно получить доступ через функцию класса
- во-вторых, это должно быть распространено, чтобы я мог использовать его с несколькими классами
- в-третьих, я могу получить к нему доступ с меньшим количеством операторов
-
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
}
}
}