This question already has answers here:
Correct handling of NSJSONSerialization (try catch) in Swift (2.0)?
(3个答案)
4年前关闭。
我有一个JSONParser,但是不幸的是我无法将
我发现可以使用do-try-catch实现此目的,但是我不知道如何在我的情况下进行调整。我尝试过的只是抛出另一个错误。
(3个答案)
4年前关闭。
我有一个JSONParser,但是不幸的是我无法将
NSJSONSerialization.JSONObjectWithData(data, options: nil, error: &error)
位适应Swift 2.0,所以我收到错误消息:Extra argument 'error' in call
我发现可以使用do-try-catch实现此目的,但是我不知道如何在我的情况下进行调整。我尝试过的只是抛出另一个错误。
class JSONParser {
let json: AnyObject?
var error: NSError?
init(data: NSData){ // ~this chunk~
self.json = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: &error)
}
func array()->NSArray?{
if let jsonResponse: AnyObject = self.json{
return jsonResponse as? NSArray
}
return nil
}
func dictionary()->NSDictionary?{
if let jsonResponse: AnyObject = self.json{
return jsonResponse as? NSDictionary
}
return nil
}
}
最佳答案
swift3
根据Swift Documents修改了NSJSONSerialization
及其方法。
do {
let JsonDict = try JSONSerialization.jsonObject(with: data, options: [])
// you can now use t with the right type
if let dictFromJSON = JsonDict as? [String:String]
{
// use dictFromJSON
}
} catch let error as NSError {
print(error)
}
Swift2 init(data: NSData){ // ~this chunk~
do {
self.json = try NSJSONSerialization.JSONObjectWithData(data, options: []) as! [String:AnyObject]
} catch {
print("error: \(error)")
self.json = nil
}
}
有关更多信息tutorial1,tutorial210-08 07:44