调用中的额外参数“错误” - 无法构建我的 Xcode 项目
Posted
技术标签:
【中文标题】调用中的额外参数“错误” - 无法构建我的 Xcode 项目【英文标题】:Extra argument 'error' in call - Unable to build my Xcode project 【发布时间】:2015-09-03 07:19:25 【问题描述】:import Foundation
class NetworkOperation
lazy var config: NSURLSessionConfiguration = NSURLSessionConfiguration.defaultSessionConfiguration()
lazy var session: NSURLSession = NSURLSession(configuration: self.config)
let queryURL: NSURL
typealias JSONDictionaryCompletion = ([String: AnyObject]? -> Void)
init(url: NSURL)
self.queryURL = url
func downloadJSONFromURL(completion: JSONDictionaryCompletion)
let request = NSURLRequest(URL: queryURL)
let dataTask = session.dataTaskWithRequest(request)
(let data, let response, let error) in
// 1. 检查 HTTP 响应是否成功 GET 请求
if let httpResponse = response as? NSHTTPURLResponse
switch httpResponse.statusCode
case 200:
// 2. 使用数据创建 JSON 对象
let jsonDictionary = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: nil)
completion(jsonDictionary)
default:
print("GET request not successful. HTTP status code: \(httpResponse.statusCode)")
else
print("Error: Not a valid HTTP response")
dataTask.resume()
在“使用数据创建 JSON 对象”步骤中,我不断收到“调用中的额外参数'错误'”。怎么了?我无法找到进一步帮助我的文档。
【问题讨论】:
【参考方案1】:你可以这样做。
do
var jsonDictionary = try NSJSONSerialization.JSONObjectWithData(data, options:NSJSONReadingOptions.MutableContainers)
//completion(jsonDictionary)
catch
// report error
【讨论】:
我还没用过'do'/'catch'。这让我想起了 Python 的 'try'/'except'。我不确定如何在 Swift 中正确执行此操作,您能否指导我查看更多文档或更好地解释它?谢谢! 另外,我是否要删除整个“if let”语句并添加“do”/“catch”?还是我只是删除“// 2.”下的所有内容?谢谢! 将“case 200:”的所有内容放入try块中 不幸的是,这并没有解决它。我设法清除了该错误,但现在我收到另一个关于“完成(jsonDictionary)”的消息,说它无法使用“(AnyObject?)”类型的参数列表调用“完成” 在“completion: JSONDictionaryCompletion”中,完成的参数是 JSONDictionaryCompletion 但你试图将参数作为 Anyobject 传递,这会导致不匹配。因此您需要将“jsonDictionary”自定义为 JSONDictionaryCompletion。注意:点击红色错误标记,它会显示可能的解决方案并按下回车/写下它所说的内容。【参考方案2】:在第 2 步的顶部:创建 json....
添加这一行:
var err: NSError?
【讨论】:
这不起作用。感谢您的意见,不胜感激。【参考方案3】:// 1. 检查 HTTP 响应是否成功 GET 请求
if let httpResponse = response as? NSHTTPURLResponse
switch httpResponse.statusCode
case 200:
// 2. 用数据创建 JSON 对象
let jsonDictionary = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: nil) as? [String: AnyObject]
completion(jsonDictionary)
default:
println("GET request not successful. HTTP status code: \(httpResponse.statusCode)")
else
println("Error: Not a valid HTTP response")
dataTask.resume()
终于明白了!谢谢大家的意见!
【讨论】:
以上是关于调用中的额外参数“错误” - 无法构建我的 Xcode 项目的主要内容,如果未能解决你的问题,请参考以下文章
Swift 3.0 迁移后的 Alamofire 错误:“调用中的额外参数”(请求方法)