在快速错误" Initializer 'init(_:)' requires that '[_]' conform to 'LosslessStringConvertible'"中将函数映



我拥有我只用jsondecoder解析的JSON数据。我制作了一个结构来解码此JSON数据,我希望该值从该JSON成为一个全局变量,因此我可以将其传递给其他控制器。我已经使这个全局变量了,我只想将我的JSON变量放入此全局变量。

因为它是Int,而我的全局变量是string,所以我尝试先使用:var a = string(jsonvalue)进行转换,但是我会收到此错误:

initializer 'init(_:)'要求 '[_]'符合'Lossless stringConvertible'

所有这些我都是从网络搜索的,我仍然是初级开发人员,所以我需要您的帮助来完成我的项目。

这是我的全局变量:

            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获得该ID值,但是当我尝试将其放入全局变量时,它显示出这样的错误:

初始器'init(_:)'要求'[_]'符合" Lossless Convertible"

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

假设您只在JSON消息中恢复一行,或者只有第一个很有趣,您才能做

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

相关内容

  • 没有找到相关文章

最新更新