func getJsON() { let manager = AFhttpSessionManager() manager.get( url,parameters: nil,success: { (operation: URLSessionTask!,responSEObject: Any?) in print("JsON: " + responSEObject!.description) self.matchesArray = responSEObject!.object(forKey: "matches")! as? NSMutableArray self.tollBothPlazatableVIEw.reloadData() },failure: { (operation: URLSessionTask!,error: NSError) in print("Error: " + error.localizedDescription) } ) }
它显示故障块上的错误.
Cannot convert value of type ‘(URLSessionTask!,NSError) -> ()’ to expected argument type ‘((URLSessionDataTask?,Error) -> VoID)?’`
有人可以解释我的代码中的错误.还有使用闭包的正确方法吗? (我是swift的新手).
解决方法 错误显然是使用Error而不是NSError,在Swift 3中你需要使用Error
而不是NSError.所以改变你的代码如下. func getJsON() { let manager = AFhttpSessionManager() manager.get( url,success: { (operation,responSEObject) in if let dic = responSEObject as? [String: Any],let matches = dic["matches"] as? [[String: Any]] { print(matches) } dispatchQueue.main.async { self.tollBothPlazatableVIEw.reloadData() } },failure: { (operation,error) in print("Error: " + error.localizedDescription) })}
注意:当你在后台线程时,总是在主线程上执行UI更改,因此像我一样在主线程上重新加载tableVIEw,也使用Swift本机Array和Dictionary而不是NSArray和NSDictionary.
总结以上是内存溢出为你收集整理的ios – 使用AFNetworking的Swift 3全部内容,希望文章能够帮你解决ios – 使用AFNetworking的Swift 3所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)