2017-08-14 63 views
0

当前我正在使用SwiftyJSON将数据集转换为JSON类型。从'JSON'投射到无关类型'String'始终失败

当我运行这个:print(json)时,它将在Xcode控制台上打印。

{ 
    "user_id": "123999923821" 
} 

但是,只要我尝试执行json["user_id"] as? String,它总是返回nil。

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) 
      } 


     } 

vc.passenger_id是一个String类型:

var passenger_id: String? 

的错误是:从 'JSON'

演员到不相关类型的 '字符串' 总是失败

什么我应该怎样解决这个问题?

回答

2

您应该使用内置于字符串转换器中的SwiftyJSON将该值转换为可选String

vc.passenger_id = json["user_id"].string 
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)") 
相关问题