【发布时间】:2018-10-26 06:19:28
【问题描述】:
我正在学习 JSONParsing。我跟着教程,我得到的是:
guard let url = URL(string: "http://localhost/test-api/public/api/register") else { return }
var request = URLRequest(url: url)
request.httpMethod = "POST"
let newUser = User.init(name: self.collectionTF[0].text, email: self.collectionTF[1].text, password: self.collectionTF[2].text)
do {
let jsonBody = try JSONEncoder().encode(newUser)
request.httpBody = jsonBody
} catch { }
URLSession.shared.dataTask(with: request) { (data, response, error) in
guard let data = data else { return }
do {
let json = try JSONSerialization.jsonObject(with: data) as? [String:Any]
print(json!)
DispatchQueue.main.async {
if json!["status"] as! Int == 200
{
GeneralHelper.shared.keepLoggedIn()
NavigationHelper.shared.moveToHome(fromVC: self)
}
}
} catch { print(error.localizedDescription)}
}.resume()
好的,这就是我为注册所做的。现在,我想创建一个 Helper,它将对 @escaping 做同样的事情,因为我们都需要解析后的 JSON 作为回报。
所以,我将endPoint 作为字符串传递,然后尝试传递这个新用户,它是Encodable,将来也可以是Decodable,但它会引发错误Cannot invoke 'encode' with an argument list of type '(Codable)'。有人可以帮忙吗?而且,在JSONParsing 中多次调用这个函数,这样会更好吗?
编辑:-所以,我现在使用networkRequestfunction,这就是我所做的。
let newData = User.init(name: "Rob", email: "abc@gmail.com", password: "12345678")
ApiHelper.sharedInstance.networkRequest_Post(urlString: "register", header: nil, encodingData: newData) { (response: User, urlRes, error) in
<#code#> }
现在,它给了我这个错误:Cannot convert value of type '(User, _, _) -> ()' to expected argument type '(_?, HTTPURLResponse?, Error?) -> ()'。有什么帮助吗?
【问题讨论】:
-
我已经创建了包装类你应该试试github.com/PrashantKT/AlamofireHelperLayer