目前我正在使用print(json)
将数据集转换为JSON类型。
当我运行它:{
"user_id": "123999923821"
}
时,它将在Xcode控制台上打印。
json["user_id"] as? String
但每当我尝试执行socketManager.socket.on("toAllDrivers") { data, ack in
if let vc = self.storyboard?.instantiateViewController(withIdentifier: "PopViewControllerID") as? PopUpViewController {
let json = JSON(data[0])
print(json)
vc.passenger_id = json["user_id"] as? String // This is the line of code that return a problem.
self.present(vc, animated: true, completion: nil)
}
}
时,它总是返回nil。
vc.passenger_id
var passenger_id: String?
是一个String类型:
SELECT PER.FULL_NAME,
PER.DATE_OF_BIRTH,
ROUND(TRUNC(MONTHS_BETWEEN('your custom date', PER.DATE_OF_BIRTH)) / 12,
1)
FROM PER_ALL_PEOPLE_F PER
WHERE TRUNC(SYSDATE) BETWEEN PER.EFFECTIVE_START_DATE AND
PER.EFFECTIVE_END_DATE
AND ROUND(TRUNC(MONTHS_BETWEEN('your custom date', PER.DATE_OF_BIRTH)) /
12, 1) > 64
错误是:
来自' JSON'到不相关的类型' String'总是失败
我该怎么做才能解决这个问题?
答案 0 :(得分:6)
您应该使用SwiftyJSON
内置的String转换器将值转换为可选的String
。
vc.passenger_id = json["user_id"].string
答案 1 :(得分:0)
试试这个:(不使用SwiftyJSON,它应该可以工作)
if let json = JSON(data[0]) as? [String : Any] {
vc.passenger_id = json["user_id"] as? String
}
或
if let user_id = json["user_id"] as? String {
vc.passenger_id = user_id
print("user_id- \(user_id)")
}
print("vc.passenger_id - \(vc.passenger_id)")