在swift中映射嵌套的JSON领域对象
我已经使用Realm和Alamofire来获取和存储我的数据,但是我得到了一个对象,它是一个嵌套的JSON对象,我正在尝试访问地址,但是我得到了零。我能够获取内容数据,但不能获取地址 “内容”:[ { “id”:1, “fisrtname”:“名称”, “lastname”:“last” “地址”:{ “id”:1, “城市”:“城市”, “电话”:空, “街道”:“城市”, }在swift中映射嵌套的JSON领域对象,swift,realm,Swift,Realm,我已经使用Realm和Alamofire来获取和存储我的数据,但是我得到了一个对象,它是一个嵌套的JSON对象,我正在尝试访问地址,但是我得到了零。我能够获取内容数据,但不能获取地址 “内容”:[ { “id”:1, “fisrtname”:“名称”, “lastname”:“last” “地址”:{ “id”:1, “城市”:“城市”, “电话”:空, “街道”:“城市”, } class Name: Object, Mappable { @objc dynamic var id: Int =
class Name: Object, Mappable {
@objc dynamic var id: Int = 0
@objc dynamic var fisrtname: String? = ""
@objc dynamic var lastname: String? = ""
@objc dynamic var Address: Address? = nil
override static func primaryKey() -> String? {
return "id"
}
required convenience init?(map: Map) {
self.init()
}
func mapping(map: Map) {
id <- map["id"]
fisrtname <- map["fisrtname"]
lastname <- map["lastname"]
Address <- map["Address"]
}
class Address: Object {
@objc dynamic var id: Int = 0
@objc dynamic var city: String? = ""
@objc dynamic var phone: Int? = ""
@objc dynamic var street: String? = ""
override static func primaryKey() -> String? {
return "id"
}
required convenience init?(map: Map) {
self.init()
}
func mapping(map: Map) {
id <- map["id"]
city <- map["city"]
phone <- map["phone"]
street <- map["street"]
}
}
类名:对象,可映射{
@objc动态变量id:Int=0
@objc动态变量fisrtname:字符串?=“”
@objc动态变量lastname:字符串?=“”
@objc动态变量地址:地址?=nil
重写静态func primaryKey()->字符串{
返回“id”
}
所需便利初始化?(映射:映射){
self.init()
}
func映射(映射:映射){
试着做这样的模型
import Foundation
import RealmSwift
class Name: Object {
dynamic var id = 0
dynamic var fisrtname : String?
dynamic var lastname : String?
dynamic var Address : UserAddress? = UserAddress()
override static func primaryKey() -> String? {
return "id"
}
}
class UserAddress: Object {
dynamic var id = 0
dynamic var city : String?
dynamic var phone : String?
dynamic var street : String?
override static func primaryKey() -> String? {
return "Id"
}
}
要从Json获取地址,请执行以下操作:
let responseResult = result["Result"] as! NSDictionary
let name = Name(value: responseResult)
let address = name.Address?.city
由留下的注释解决了问题。如果您试图从嵌套关系设置关系,请确保扩展Mappable
,忘记这一点会使调试非常困难,因为您不会得到任何关于明显的复制/粘贴/移动太快/不够快错误的指示或提示。尝试设置Ad着装
classMappable
no more copying-uu-,谢谢你的帮助help@TarasChernyshenko我不知道我怎么会陷入和努夫一样的境地,但我做到了,你帮我省去了几个小时的挠头。我想这很容易错过