Swift 2中的“调用中的额外参数'错误'”错误[重复]

Posted

技术标签:

【中文标题】Swift 2中的“调用中的额外参数\'错误\'”错误[重复]【英文标题】:"Extra argument 'error' in call" error in Swift 2 [duplicate]Swift 2中的“调用中的额外参数'错误'”错误[重复] 【发布时间】:2015-12-28 23:53:51 【问题描述】:

我是通过Beginning Xcode 书学习编程和学习的新手。它不在 Swift 2 上(但我现在正在学习它)。

在其中一个项目中,它正在教授如何创建一个 twitter 类型的应用程序。代码如下:

    func retrieveTweets() 
        tweets?.removeAllObjects()

        if let account = selectedAccount 
            let requestURL = NSURL(string: "https://api.twitter.com/1.1/statuses/home_timeline.json")
            let request = SLRequest(forServiceType: SLServiceTypeTwitter,
                requestMethod:  SLRequestMethod.GET,
                URL: requestURL,
                parameters: nil)

            request.account = account
            request.performRequestWithHandler()
            
                responseData, urlResponse, error in

                if (urlResponse.statusCode == 200)
                
                    var jsonParseError : NSError?
                    **self.tweets = NSJSONSerialization.JSONObjectWithData(responseData, options: NSJSONReadingOptions.MutableContainers, error: &jsonParseError) as? NSMutableArray**
                

                dispatch_async(dispatch_get_main_queue()) 
                    self.tableView.reloadData()
                
            
        

*我在带有 ** 的代码中收到“调用中的额外参数'错误'”错误(self.tweets ...)。我试过放“do”/“catch”块代码,但老实说没有放在哪里,或者知道我在用它做什么:)

有人可以帮我解决这个问题吗?需要知道要在粗体代码(或周围)中进行哪些更改才能使其正常工作。

谢谢!!

【问题讨论】:

删除错误参数,改为为该行添加尝试。 do self.tweets = try NSJSONSerialization.JSONObjectWithData(responseData, options: NSJSONReadingOptions.MutableContainers) as? NSMutableArray catch _ //error 【参考方案1】:

您使用的是 Swift 2。JSONObjectWithData 现在是一个可抛出函数。您必须将其包装在 do try ... catch 块中:

if (urlResponse.statusCode == 200)

    do 
        self.tweets = try NSJSONSerialization.JSONObjectWithData(responseData, options: [.MutableContainers]) as? NSMutableArray
     catch let error as NSError 
        print(error.localizedDescritpion)
    

【讨论】:

效果很好!非常感谢!【参考方案2】:

您使用 do/catch 块的直觉是正确的。因为JSONObjectWithData 会抛出错误,所以需要用try 调用它。在处理可能抛出的 Swift 函数时,error 参数是不必要的。试试这样的。

if (urlResponse.statusCode == 200) 
    do 
        self.tweets = try NSJSONSerialization.JSONObjectWithData(responseData, options: NSJSONReadingOptions.MutableContainers)
     catch 

        print("\(error)")
    

【讨论】:

以上是关于Swift 2中的“调用中的额外参数'错误'”错误[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Swift - call / nil / call 中的额外参数“错误”可以抛出

Alamofire Swift 3.0 调用中的额外参数

SwiftUI:随机“调用中的额外参数”错误

我哪里出错了?前两行是错误所在.....调用中的额外参数“错误”

调用中的额外参数“错误” - 无法构建我的 Xcode 项目

当我在 Alamofire 中使用 UserDefaults.standard.object 时,它显示“调用中的额外参数”错误