我是编程和学习 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”块代码但老实说没有把它放在哪里,或者知道我在做什么:)
有人可以帮我这个吗?需要知道在粗体代码(或其周围)中要更改的内容才能使其正常工作。
谢谢!
答案 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)
}
}