Swift 2中的“调用中的额外参数'错误'错误”

时间:2015-12-28 23:53:52

标签: ios xcode swift

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

在其中一个项目中,它正在教授如何创建一个推特式应用程序。这是代码:

    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”块代码但老实说没有把它放在哪里,或者知道我在做什么:)

有人可以帮我这个吗?需要知道在粗体代码(或其周围)中要更改的内容才能使其正常工作。

谢谢!

2 个答案:

答案 0 :(得分:0)

您使用do / catch块的直觉是正确的。由于JSONObjectWithData可能会引发错误,因此您需要使用try来调用它。处理可抛出的Swift函数时,不需要error参数。尝试这样的事情。

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

        print("\(error)")
    }
}

答案 1 :(得分:0)

您正在使用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)
    }
}