此代码继续在URLSession实例化附近给出错误处理消息。我对swift3的帮助感到困惑。
let myUrl = NSURL(string: "http://myURL.com/user")
let request = NSMutableURLRequest(url: myUrl! as URL)
request.httpMethod = "POST"
let postString = "email=\(userEmail)&password=\(userPassword)&username=\(userUsername)"
request.httpBody = postString.data(using: String.Encoding.utf8)
let task = URLSession.shared.dataTask(with: request as URLRequest)
{
(data: Data!, response: URLResponse!, error: Error!) in
if error != nil
{
print("error=\(error)")
return
}
var err: NSError?
do {
let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? NSDictionary
if let parseJSON = json {
var resultValue:String = parseJSON["status"] as! String;
print("result: \(resultValue)");
我得到的错误是:
投掷函数类型'(Data?,URLResponse?,错误?)的无效转换抛出 - >()'到非投掷函数类型
答案 0 :(得分:0)
我认为错误意味着以下内容。
默认情况下,函数可以抛出,这就是它为返回值使用选项的原因。每当函数抛出时,可选值将为nil。但是,您使用感叹号运算符删除可选的nil值。
您应该了解如何正确处理Swift中的异常。然后,您应该能够清理代码并使其正常工作。
答案 1 :(得分:0)
该错误具有误导性。只要省略类型注释,它们弊大于利。
使用不带NS
前缀的原生结构:
let myUrl = URL(string: "http://myURL.com/user")!
var request = URLRequest(url: myUrl)
request.httpMethod = "POST"
let postString = "email=\(userEmail)&password=\(userPassword)&username=\(userUsername)"
request.httpBody = postString.data(using: .utf8)
let task = URLSession.shared.dataTask(with: request) { (data, response, error) in ...