如果有时检测为 int 和其他字符串,如何转换 swiftyjson 值
Posted
技术标签:
【中文标题】如果有时检测为 int 和其他字符串,如何转换 swiftyjson 值【英文标题】:How to cast swiftyjson value if sometimes is detected as int and other as string 【发布时间】:2016-04-07 14:40:51 【问题描述】:我正在使用 alamofire 和 swiftyjson 获取登录信息
Alamofire.request(.POST, postsEndpoint, parameters: newPost)
.responseSwiftyJSON( (request, response, json, error) in
在我的回复中我有价值
json["id_usuario"]
问题在于,当值为 -1 或 0(零)时,它可以作为 int 获得 使用
let idUser = json["id_usuario"].int
以及值在-1中的响应示例
"id_usuario" : -1
当值大于时响应,登录成功
"estado" : "Jalisco",
"plan_activo" : "0",
"datos_registro_completos" : 1,
"plan" : 0,
"genero" : "H",
"id_usuario_openpay" : "annvwl3didjylvex0wzh",
"fb_id" : "10205386840402780",
"email" : "steel.edward@hotmail.com",
"postal_code" : "44630",
"address" : "Nueva Escocia #1514 Interior 106",
"nombres" : "Steel Edward",
"app_mat" : "George",
"app_pat" : "Vázquez",
"ciudad" : "Guadalajara",
"id_usuario" : "204",
"admin" : "1",
"phone_number" : "3334691505"
但如果值大于 0 则返回 nil 并且只能作为字符串获取
let idUser = json["id_usuario"].string
我的最终代码可以工作,看起来像这样
if let idUser = json["id_usuario"].int
if(idUser == -1)
//specific error from the server
else if(idUser == 0)
//another specific error from the server
else if let idUser = json["id_usuario"].string
if(idUser != "")
//success
我想将值始终存储为 Int 并使用它执行验证,并拥有这样的代码
if(idUser == -1)
//specific error from the server
else if(idUser == 0)
//another specific error from the server
else if (idUser > 0)
//success
【问题讨论】:
没有意义的实际 JSON 中的数据如何传输?but if the value is greater than 0 returns a nil and only could be obtained as string
这没有多大意义。请向我们展示大于 0 的值失败的示例。
响应来自 php,使用数组中的 json_encode
【参考方案1】:
var id = 0
if let num = json["id_usuario"].int
id = num
else if let str = json["id_usuario"].string,
let num = Int(str)
id = num
//
// do something with id, which is an Int value
如果你拥有服务器代码,你最好在那里找到一个错误......
【讨论】:
【参考方案2】:这是我第一个不使用 Swifty-JSON 的解决方案
let id_usuario_object:NSObject = jsonData.valueForKey("id_usuario") as! NSObject
var id_usuario:Int
if ( id_usuario_object.isKindOfClass(NSString) )
let id_usuario_string:NSString = jsonData.valueForKey("id_usuario") as! NSString
id_usuario = Int(id_usuario_string.intValue)
else
id_usuario = jsonData.valueForKey("id_usuario") as! NSInteger
【讨论】:
【参考方案3】:问题在于来自 PHP 的 JSON 响应...
之前
echo json_encode( $results);
之后
echo json_encode( $results, JSON_NUMERIC_CHECK );
【讨论】:
以上是关于如果有时检测为 int 和其他字符串,如何转换 swiftyjson 值的主要内容,如果未能解决你的问题,请参考以下文章