背景
我有一个ios应用程序正在接收来自帖子的回复。我只是想在内容标记中提取id。但是我在帮助页面上看到的所有语法似乎都不起作用。
self.post("stands/build", data: dataDictionary).responseString { (response) -> Void in
let responseValue = response.result.value
let new_data = JSON(responseValue!)
print(new_data)
print(new_data[0])
print(new_data["message"])
print(new_data["content"])
打印:
{"message":"Success","content":{"id":351,"user_id":2,"name":"test","creator":null,"size":0,"description":"Test"}}
null
null
null
我正在使用import SwiftyJSON
问题:
将打印用户ID的代码为:351.
我认为print(new_data["content]["id"])
会起作用,但它只会给出空值
编辑1
if let dataFromString = responseValue!.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false) {
//SwiftyJSON, construct JSON.
let json = JSON(data: dataFromString)
print(json["content"]["id"])
}
导致此错误:
2016-07-19 14:17:15.888 MYPROJECT[13799:3666542] -[__NSCFDictionary dataUsingEncoding:allowLossyConversion:]: unrecognized selector sent to instance 0x7ffe2e0416a0
2016-07-19 14:17:15.946 MYPROJECT[13799:3666542] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFDictionary dataUsingEncoding:allowLossyConversion:]: unrecognized selector sent to instance 0x7ffe2e0416a0'
编辑2
let id: Int = JSON["content"]["id"].intValue
给出错误instance member 'subscript' cannot be used on type 'JSON'
编辑3差不多......
self.post("stands/build", data: dataDictionary).responseString { (response) -> Void in
let responseValue = response.result.value
let new_dict = (responseValue as! NSDictionary)
print(new_dict["content"]!["id"])
打印Optional(356)
如何打印356?
编辑4
print(new_dict["content"]!["id"]!!.intValue)
的工作原理。
尽管如此,我认为我的解决方案很草率。以下解决方案都没有起作用,但我会提出解决方案,这使我得到了这个答案。
答案 0 :(得分:1)
尝试以下代码
if let new_data = JSON(responseValue!) as? NSDictionary{
let content = new_data["content"] as! NSdictionary
let user_id = content[user_id] as! Int
print(format:"user_id :: %d",user_id)
}
else{
print("no data found..")
}
答案 1 :(得分:0)
您忘记使用JSON对象的int
属性。
一个简单的例子:
if let id: Int = json["someData"]["someValue"].int {
// id was defined properly
}
else {
print("parsing error: \(json["someData"]["someValue"])")
}
或者您可以使用intValue
let id: Int = json["someData"]["someValue"].intValue // defines some value or zero as fallback
我希望这可以帮助您解决问题。
答案 2 :(得分:0)
从日志中
首先,responseValue不是JSON对象,它只是一个json字符串。 如果是的话,
if let dataFromString = responseValue.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false) {
//SwiftyJSON, construct JSON.
let json = JSON(data: dataFromString)
print(json["content"]["id"])
}
这应该有效!