ios - Swift 4 - 抛出函数的无效转换

标签 ios swift xcode

我有 connect.swift 代码:

public struct Connect {
    let adresSerwera = "http://test.nazwa.pl/"
    typealias Odpowiedz = (Data?, Error?) -> Void


    func getJsonFromServer(parametry: String, wynikRequesta: @escaping Odpowiedz) {
        guard let Url = URL(string: self.adresSerwera + "kartyEndpoint.qbpage" + parametry) else { return }
        URLSession.shared.dataTask(with: Url) { (data, response, error) in
            if error == nil {
                guard let data = data else {
                    print("Error 100:  \(error)")
                    wynikRequesta(nil, error)
                    return
                }
                print("R>" + self.adresSerwera + "kartyEndpoint.qbpage?" + parametry)
                do {
                    //let json = try JSONDecoder().decode(forecast.self, from: data)
                    wynikRequesta(data, nil)
                    dump(data)
                    print("\(data)")

                } catch let err {
                    print("Error 101: ", err)
                    wynikRequesta(nil, err)
                }
            } else{
                print("Error 102: Problem with download data")
            }
        }.resume()
    }
    func sprawdzDaneLogowania(login: String?, haslo: String?, callback: @escaping Odpowiedz) {
        getJsonFromServer(parametry: "?action=LOGOWANIE&login=\(login!)&password=\(haslo!)", wynikRequesta: callback)
    }

}

和下载数据的代码:

@IBAction func btnLoginPressed(_ sender: Any) {
        if self.textFieldLogin.text?.isEmpty ?? true || self.textFieldPassword.text?.isEmpty ?? true  {
            print("Uzupełnij wszystkie pola!!")
        } else {
            print("Pola uzupełnione")
            cms.sprawdzDaneLogowania(login: self.textFieldLogin.text, haslo: self.textFieldLogin.text, callback: { (data, blad) in
                if blad == nil{
                    if let dane = data {
                        let str = String(data: dane, encoding: .utf8)
                        let downloadedData = RankingGrupowyObject(JSONString: str!)


                        let decoder = JSONDecoder()
                        let zalogowanyUser = try decoder.decode(LoginUser.self, from: data)

                    } else {
                        print("Error 103: \(data)")
                    }
                } else {
                    print("Error 104: \(blad)")
                }


            })
        }
    }

对于行: cms.Check the Logs (login: self.textFieldLogin.text, password: self.textFieldLogin.text, 回调:{(date, error) in

我收到一条错误消息:

Invalid conversion from throwing function of '(_, _) throws -> ()' is a non-throwing function type 'Connect. Answer' (aka '(Optional , Optional ) -> ()')

我做错了什么?你如何解决这个错误? 通过使用 CheckLogging 函数,我想创建一个目标对象

最佳答案

let zalogowanyUser = try decoder.decode(LoginUser.self, from: data)

这部分可以抛出,意味着你应该在那里做/捕获:

do {
    let zalogowanyUser = try decoder.decode(LoginUser.self, from: data)
}
catch {
    print("Error in decoder")
}

或者让错误传播到上部。为此,您的方法 cms.sprawdzDaneLogowania 可以标记为 throws,或者您的方法的回调 block 可以标记为这样。

关于ios - Swift 4 - 抛出函数的无效转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50015178/

相关文章:

ios - 在通话期间播放音乐 iOS Swift

iOS 共享扩展仅在 Safari 中显示

ios - 如何将数据上传到苹果开发者设备

ios - 如何用本地目录中的 AVPlayerItem 类型的元素填充数组

ios - API 不包含某些对象的任何值,Xcode 在运行该应用程序时会出现 fatal error

iphone - 我的 debian 服务器需要 ssl 证书才能与 APNS 通信吗?

iphone - 如何在 iPhone 中将图像从相机/UIImagePickerController 动态添加到 iCarousel

iphone - 我可以在 iPhone 或 IPod 中编译 mysql、php(或者已经构建好的)吗?

ios - 如何在 Realm 中使用 < 或 <= 运算符搜索对象?

xcode - SwiftUI预览中的深色模式在Xcode 11.4中没有深色背景