Привет, я новичок в swift, и я все еще учусь, поэтому я пытаюсь создать контроллер входа в систему и проанализировать данные json, если он исправляет их, проанализировать данные json с id и прочее, и если вход в систему не удастся, то json покажет своего родасообщение.я уже создаю структуру для всех требуемых данных значения, но я получил эту ошибку, в которой говорится, что это nil.
, так что это json, если вход выполнен успешно:
[{"id": 891, "name": "User", "email": "qdpim@immobisp.com", "status": "1"}]
и это jsonесли вход не выполнен:
[{"message": "Ошибка входа в систему ..", "status": "0"}]
, поэтому в основном он имееттот же URL, я думаю?но я не знаю, я вроде застрял здесь, и мне нужна помощь
struct login : Codable {
let id : Int
let name : String
let email : String
let status : String
let message : String
init(dictionary : [String : Any]) {
id = (dictionary ["id"] as? Int)!
name = (dictionary ["name"] as? String)!
email = (dictionary ["email"] as? String)!
status = (dictionary ["status"] as? String)!
message = (dictionary ["message"] as? String)!
}
enum CodingKeys : String, CodingKey {
case id = "id"
case name = "name"
case email = "email"
case status = "status"
case message = "message"
}
}
func Login() {
let Email = EmailField.text!
let Pass = PasswordField.text!
print(api)
guard let JsonUrl = URL(string: api) else {return}
URLSession.shared.dataTask(with: JsonUrl) { (data, response, error) in
guard let data = data else {return}
do{
let parsing = try JSONDecoder().decode([login].self, from: data)
print(parsing)
self.Loginnn = parsing
let stats = self.Loginnn.map { $0.status}
if stats.contains("1"){
print("Login Success")
DispatchQueue.main.async {
self.appDelegate.loginSeque()
}
}else if stats.contains("0") {
let action = UIAlertAction(title: "Got It", style: .default, handler: nil)
let alert = UIAlertController(title: "Wrong Email / Password", message: "Please Try Again ", preferredStyle: .alert)
alert.addAction(action)
self.present(alert, animated: true, completion: nil)
// so basicly i wanna run this alert action by search status if its contains "0"
}
}
}catch{
print(error)
}
}.resume()
}
, поэтому, когда я пытаюсь проверить, не прошел ли мой вход в систему, я не показываю сообщение в моем json в моем журнале, вместо этого он показывает эту ошибку
"keyNotFound (CodingKeys (stringValue:" id ", intValue: nil), Swift.DecodingError.Context (codingPath: [_JSONKey (stringValue:" Index 0 ", intValue: 0)], debugDescription: "Нет значения, связанного с ключом CodingKeys (stringValue: \" id \ ", intValue: nil) (\" id \ ").", UnderError: nil)) "
я просто хочу выскочитькакое-то сообщение или предупреждение, если вход не выполнен из-за неправильного пароля или адреса электронной почты ..... так, может, кто-нибудь может мне помочь, как сделать это наилучшим образом?