来自' JSON'到不相关的类型' String'总是失败

时间:2017-08-14 08:09:39

标签: ios swift

目前我正在使用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'总是失败

我该怎么做才能解决这个问题?

2 个答案:

答案 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)")