Лучший способ выполнить этот синтаксический анализ Json в модели и наоборот - использовать любую библиотеку синтаксического анализа, например ObjectMapper , Swifty Json или swift Codable протокол. С ними вы можете с такой легкостью выполнять двусторонний синтаксический анализ, и даже для сложной модели данных вам не нужно проделывать много работы. Так что лучше не изобретать велосипед.
Вот несколько примеров для вашего конкретного c варианта использования.
let userData = ["lastname": "Last", "firstname": "First"]
Использование ObjectMapper: ( Install pod и добавьте импорт, чтобы он заработал )
struct User: Mappable {
var firstname: String?
var lastname: String?
init?(map: Map) {}
mutating func mapping(map: Map) {
firstname <- map["firstname"]
lastname <- map["lastname"]
}
}
if let newuser = Mapper<User>().map(JSON: userData) {
print(newuser)
}
Используя протокол Codeable:
struct User: Codable {
var firstname: String
var lastname: String
}
do {
let data = try JSONSerialization.data(withJSONObject: userData, options: .prettyPrinted)
let decoder = JSONDecoder()
let user = try decoder.decode(User.self, from: data)
} catch {
print(error.localizedDescription)
}