我有这个JSON数据,可以使用JSONDecoder进行解析。我已经构造了一个结构来解码此JSON数据,并且希望该JSON中的值成为全局变量,以便可以将其传递给其他控制器。我已经创建了此全局变量,并且只想将JSON变量放入此全局变量中。
由于它是The import com.google.api.ads.admanager.axis.utils.v201902 cannot be resolved
,而我的全局变量是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}
获取该id值,但是当我尝试将其放入全局变量时,它显示出如下错误:
初始化器
JSONDecoder
要求'init(_:)'
符合'LosslessStringConvertible'
我需要帮助,因为我仍然是初级开发人员,所以我不知道此代码是否正确。
答案 0 :(得分:0)
假设您在json消息中仅返回一行,或者只有第一行很有趣,您可以这样做
if let id = ids.first {
let GlobalVariable.UserId = String(id)
}