检索 JSON 对象 Swift 2
Posted
技术标签:
【中文标题】检索 JSON 对象 Swift 2【英文标题】:Retrieve JSON object Swift 2 【发布时间】:2015-11-19 12:21:02 【问题描述】:我可以使用 Swift 获取这个 JSON:
"estado": "1",
"turno":
"_id": "1",
"_idEmpresa": "1",
"_idCentro": "1",
"Descripcion": "LOCAL",
"TurnoActual": "40",
"TurnoSiguiente": "53",
"Version": "2185"
使用以下代码:
let estado = json["estado"] as? String
if estado == "1"
print("Estado OK")
但是,我想访问回合属性。我尝试了很多组合都没有成功。
如果可能的话,我想像在 android 上做的那样,将 turno 直接作为对象 Turno。
你们能帮我解决这个问题吗?
【问题讨论】:
你使用 SwiftyJson 插件吗? 【参考方案1】:尝试关注
let dictResult = json["turno"] as! NSDictionary
let id = dictResult["_id"] as! String
let idEmpresa = dictResult["_idEmpresa"] as! String
// OR you can directly get data, if you have json as a NSDictionary
let id = json.objectForKey("turno")?.objectForKey("_id") as! String
let idEmpresa = json.objectForKey("turno")?.objectForKey("_idEmpresa") as! String
【讨论】:
【参考方案2】:turno
是具有 String
键和 String
值的字典,因此不需要向下转换。
此示例打印键 _id
和 Descripcion
(如果可用)的值。
if let turno = json["turno"] as? [String:String]
if let identifier = turno["_id"] print(identifier)
if let description = turno["Descripcion"] print(description)
【讨论】:
【参考方案3】:我不知道有任何 Swift 库可以自动从您的字典中创建对象。
但自己制作并不难,只是一些样板。
一个例子可能是这样的......
根据字典键创建对象及其初始化器:
struct Turno
let _id:String
let _idEmpresa:String
let _idCentro:String
let description:String
let turnoActual:String
let turnoSiguiente:String
let version:String
init(fromDictionary dictionary: [String:String])
_id = dictionary["_id"] ?? ""
_idEmpresa = dictionary["_idEmpresa"] ?? ""
_idCentro = dictionary["_idCentro"] ?? ""
description = dictionary["Descripcion"] ?? ""
turnoActual = dictionary["TurnoActual"] ?? ""
turnoSiguiente = dictionary["TurnoSiguiente"] ?? ""
version = dictionary["Version"] ?? ""
然后将字典传递给结构构造函数:
if let content = json["turno"] as? [String:String]
let turno = Turno(fromDictionary: content)
print(turno._id)
print(turno._idEmpresa)
print(turno._idCentro)
print(turno.description)
print(turno.turnoActual)
print(turno.turnoSiguiente)
print(turno.version)
【讨论】:
以上是关于检索 JSON 对象 Swift 2的主要内容,如果未能解决你的问题,请参考以下文章
从 JSON + Swift 或 ObjC 检索数据时如何处理 CoreData 中的关系