【问题标题】:I'm having trouble catching errors for this function [duplicate]我无法捕获此功能的错误 [重复]
【发布时间】:2016-03-04 19:38:45
【问题描述】:

我在调用中的八行“extra argument 'error''中遇到错误。有什么建议吗?

@IBAction func loadFollowers(sender: AnyObject) {

    Twitter.sharedInstance().APIClient.sendTwitterRequest(Twitter.sharedInstance().APIClient.URLRequestWithMethod("GET", URL: "https://api.twitter.com/1.1/friends/ids.json", parameters: ["user_id":Twitter.sharedInstance().session()!.userID], error: nil), completion:
        {(response:NSURLResponse?, data:NSData?, error:NSError?) -> Void in

        var dic = NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments, error: nil) as! NSDictionary
        var friends = dic["ids"] as! NSArray
        self.following = friends

            Twitter.sharedInstance().APIClient.sendTwitterRequest(Twitter.sharedInstance().APIClient.URLRequestWithMethod("GET", URL: "https://api.twitter.com/1.1/followers/ids.json", parameters: ["user_id":Twitter.sharedInstance().session()!.userID], error: nil), completion: {(resonse:NSURLResponse?,data:NSData?,error:NSError?) -> Void in

            var dic = NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments, error: nil) as! NSDictionary
            var followers = dic["ids"] as! NSArray
            self.followers = followers
            for id in self.following {
                if !self.followers.containsObject(id)
                {
                    var st = id as! NSNumber
                    Twitter.sharedInstance().APIClient.loadUserWithID(st.stringValue, completion: {(user:TWTRUser?,error:NSError?) -> Void in
                        self.results.addObject(user!)
                        //self.tableView.reloadData()
                        print("done")
                    })
                }
            }

        })
    })}

【问题讨论】:

  • 请指出代码中的错误行。
  • var dic = NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments, error: nil) as! NSDictionary
  • 你应该使用 swift do try catch 构造
  • "调用中的额外参数'错误'
  • 感谢您的提示。我修改了代码如下:

标签: xcode swift


【解决方案1】:

在 Objective-C 中这曾经是可能的,现在你必须这样做:

do{
  let dict = try NSJSONSerialization.JSONObjectWithData(data!, options: .AllowFragments) as! NSDictionary
}catch let error{
  print(error)
}

【讨论】:

  • 试过了。同样的错误。
  • @DavidiTokuta 你删除了error: 参数吗?
  • 顺便说一句,您在代码中的第 3 行和第 9 行中都有该行,因此请确保将这两行都替换掉。
  • 你的意思是'错误:错误'?
  • 是的,从这些行中删除整个“错误:错误”。您可以这样做的原因是错误参数已从 Swift 中方法调用的参数列表中删除,以支持异常处理。
猜你喜欢
  • 1970-01-01
  • 2014-09-22
  • 2018-08-02
  • 1970-01-01
  • 2019-09-16
  • 2020-06-17
  • 2016-09-08
  • 1970-01-01
  • 2023-01-12
相关资源
最近更新 更多