У меня есть данные JSON, которые я просто анализирую с помощью JSONDecoder.Я создал структуру для декодирования этих данных JSON и хочу, чтобы это значение из этого JSON было глобальной переменной, чтобы я мог передать ее другому контроллеру.Я уже создал эту глобальную переменную и просто хочу поместить свою переменную JSON в эту глобальную переменную.
Поскольку это Int
, а моя глобальная переменная - string
, поэтому я пытаюсь преобразовать еесначала с: var a = string(jsonvalue)
, но я получаю эту ошибку:
Инициализатор 'init(_:)'
требует, чтобы '[_]'
соответствовал 'LosslessStringConvertible'
Все это я ищуиз Интернета, я все еще начинающий разработчик, поэтому мне нужна ваша помощь, чтобы завершить мой проект.
это моя глобальная переменная:
struct GlobalVariable {
static var ProjectId = String() //project id
static var UserId = String() // User Id
var GroupId = String() // group Id
static var Status = String() //Status for login
init(dictionary : [String : Any]) {
id = dictionary ["id"] as! Int
name = dictionary ["name"] as! String
email = dictionary ["email"] as! String
status = dictionary ["status"] as! String
}
enum CodingKeys : String, CodingKey {
case id = "id"
case name = "name"
case email = "email"
case status = "status"
}
}
}
var Loginnn = [login]()
struct login : Codable {
let id : Int
let name : String
let email : String
let status : String
}
let parsing = try JSONDecoder().decode([login].self, from: data)
print(parsing)
self.Loginnn = parsing
//This is for login verification
let stats = self.Loginnn.map { $0.status}
//this is the Id value I try to make into global Variable
let ids = self.Loginnn.map { $0.id} // I use this map function to extract that value and put it into the variable
GlobalVariable.UserId = String(ids)// I use string to convert from int to string. --> this is where the error begin
if stats.contains("1"){ // Login Success
print("Login Success")
DispatchQueue.main.async {
self.appDelegate.loginSeque()
}
}else if stats.isEmpty {//fail login
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)
}
}catch{
print(error)
}
}.resume()
из этой строки кода: let ids = self.Loginnn.map { $0.id}
, я могу получить это значение идентификатора из JSONDecoder
, но когда я пытаюсь поместить его в глобальную переменную, он выдает ошибку, подобную этой:
Initializer 'init(_:)'
требует, чтобы '[_]'
соответствует 'LosslessStringConvertible'
Мне нужна помощь, потому что я все еще младший разработчик, поэтому я не знаю, правильный ли этот код.