我是Swift和API编程的新手,遇到以下错误:
未捕获的异常' NSInvalidArgumentException',原因: ' - [__ NSCFNumber长度]
这是导致此错误的行:
print(json[“totalPostsByUser”])
有关更多上下文,这是一个更完整的代码示例:
let jsonStr = NSString(data: request.HTTPBody!, encoding: NSUTF8StringEncoding)
let task = session.dataTaskWithRequest(request, completionHandler: { (data, response, error) -> Void in
let httpResponse = response as? NSHTTPURLResponse
var err: NSError?
if httpResponse!.statusCode == 201 {
if error == nil {
let jsonStr = NSString(data: data!, encoding: NSUTF8StringEncoding)
let jsonData: NSData = jsonStr!.dataUsingEncoding(NSUTF8StringEncoding)!
do {
if let json: AnyObject = try NSJSONSerialization.JSONObjectWithData(jsonData, options: NSJSONReadingOptions.AllowFragments) {
let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
print(responseString)
print(json["totalPostsByUser"])
totalPostsByUser = (json["totalPostsByUser"] as? Int)!
}
} catch let parseError {
}
}
}
}
答案 0 :(得分:1)
我认为你需要用下面的代码替换一些代码,
if let json: NSMutableDictionary = try NSJSONSerialization.JSONObjectWithData(jsonData, options: NSJSONReadingOptions.AllowFragments) as? NSMutableDictionary
{
let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
print(responseString)
//print(json["totalPostsByUser"])
print(json.valueForKey("totalPostsByUser"))
//totalPostsByUser = (json["totalPostsByUser"] as? Int)!
}
将anyObject转换为MutableDictionary,这将很容易从key中提取值。
希望这会对你有所帮助。