迅速将函数映射到全局变量“初始化程序'init(_ :)'要求'[_]'符合'LosslessStringConvertible'”

时间:2019-05-21 08:45:46

标签: swift dictionary global-variables swift4

我有这个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'

我需要帮助,因为我仍然是初级开发人员,所以我不知道此代码是否正确。

1 个答案:

答案 0 :(得分:0)

假设您在json消息中仅返回一行,或者只有第一行很有趣,您可以这样做

if let id = ids.first {
    let GlobalVariable.UserId = String(id)
}