Расшифровка класса модели SWIFT из текстового файла
У меня есть модельный класс
class User{
var name:String
var number:Int
}
у меня есть детали этого загруженного в виде текстового файла с форматом
firstname:John
rollnumber:234
5
Как я могу исправить собственный декодер для этого.
Примечание: ключи "имя", "номер ролла" являются динамическими и получаются из бэкэнда.
2 ответа
Было бы что-то вроде этого:
struct User: Decodable {
let name: String
let number: Int
init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: UserKeys.self)
name = try container.decode(String.self, forKey: .name)
number = try container.decode(Int.self, forKey: .number)
}
private enum UserKeys: String, CodingKey {
case name = "firstname"
case number = "rollnumber"
}
static getUser(jsonData: Data) -> User? {
do {
let user = try JSONDecoder().decode(User.self, from:jsonData)
return user
} catch {
return nil
}
}
}
И получить пользователя:
User.getUser(jsonData: data)
Разбери вот так, передай ответ как Dict
к init
метод
class User{
var name:String?
var number:Int?
init(With dict:[String:Any]){
if let value = dict["firstname"] as? String{
name = value
}
if let value = dict["rollnumber"] as? Int{
number = value
}
}
}