Json 无法将数据投射到我的模型中
Json can not cast data into my model
使用对象映射器和领域作为数据库。
我从我的服务器得到一个 JSON,其中包含人 class 我需要更新一些属性,然后 post 它到服务器并更新。
我的个人模型 class 我无法声明对象列表,这是主要问题
import RealmSwift
import ObjectMapper
import Realm
class person:Object, Mappable{
dynamic var firstNameFa:String=""
dynamic var lastLoginDate:String=""
dynamic var lastNameFa:String=""
dynamic var phone:String=""
dynamic var email:String?//=""
//var refercode:String?
dynamic var id:String=""
dynamic var identityId:String=""
//var password:String?
dynamic var userAccount:UserAccount?
dynamic var account:Account?
dynamic var code:String?
dynamic var address:Address? // tttt
var photo:Image?
dynamic var smartPhone="IPHONE"
var defaultAddressList:List<DefaultAddress>?
//dynamic var defaultAddressList = [DefaultAddress]() // this line is my problem
//dynamic var defaultAddressList:[DefaultAddress] = []
dynamic var serverToken=""
convenience required init?(map: Map) {
self.init()
}
func mapping(map: Map) {
firstNameFa <- map["firstNameFa"]
lastNameFa <- map["lastNameFa"]
identityId <- map["identityId"]
phone <- map["phone"]
email <- map["email"]
id <- map["id"]
userAccount <- map["userAccount"]
address <- map["address"]
defaultAddressList <- map["defaultAddressList"]
lastLoginDate <- map["lastLoginDate"]
account <- map["account"]
code <- map["code"]
photo <- map["photo"]
//defaultAddressList <- map["defaultAddressList"]
}
override class func primaryKey() -> String? {
return "id"
}
person 在数据中,我正在检索它并放入 personJson
self.personJson = json["data"] as AnyObject
最后投射到我的模型中
self.psInfo = Mapper<person>().map(JSONObject: self.personJson)!
我的 DefaultAddress 是 nill 因为我在 model.all 中声明它是错误的方式因为 realm
这太长了所以我 post 我在这里回复。
好吧,要理解转换 Class,您需要知道我们可以在 JSON 中使用的基本类型很少(例如 int、bool string、array 等)。现在 Realm List 不属于这些类型中的任何一种,因此为了将原始类型转换为所需的类型,例如 List<>
,您将不得不使用 ObjectMapper 中的 TransformType。
我相信你的 JSOn 有地址列表数组,它决不能映射到 List<>
所以,为了将数组转换为 List<>
类型,你需要一个转换Class。如果您在 ObjectMapper 库中看到,您会看到一些已经内置的 Transform Class e.g DateTransform()
会将时间戳字符串转换为 Swift Date
.
这就是为什么您要么必须自己编写转换 class,要么已经有一个专门为此构建的库,在 GitHub -> ObjectMapper-Realm
使用对象映射器和领域作为数据库。
我从我的服务器得到一个 JSON,其中包含人 class 我需要更新一些属性,然后 post 它到服务器并更新。
我的个人模型 class 我无法声明对象列表,这是主要问题
import RealmSwift
import ObjectMapper
import Realm
class person:Object, Mappable{
dynamic var firstNameFa:String=""
dynamic var lastLoginDate:String=""
dynamic var lastNameFa:String=""
dynamic var phone:String=""
dynamic var email:String?//=""
//var refercode:String?
dynamic var id:String=""
dynamic var identityId:String=""
//var password:String?
dynamic var userAccount:UserAccount?
dynamic var account:Account?
dynamic var code:String?
dynamic var address:Address? // tttt
var photo:Image?
dynamic var smartPhone="IPHONE"
var defaultAddressList:List<DefaultAddress>?
//dynamic var defaultAddressList = [DefaultAddress]() // this line is my problem
//dynamic var defaultAddressList:[DefaultAddress] = []
dynamic var serverToken=""
convenience required init?(map: Map) {
self.init()
}
func mapping(map: Map) {
firstNameFa <- map["firstNameFa"]
lastNameFa <- map["lastNameFa"]
identityId <- map["identityId"]
phone <- map["phone"]
email <- map["email"]
id <- map["id"]
userAccount <- map["userAccount"]
address <- map["address"]
defaultAddressList <- map["defaultAddressList"]
lastLoginDate <- map["lastLoginDate"]
account <- map["account"]
code <- map["code"]
photo <- map["photo"]
//defaultAddressList <- map["defaultAddressList"]
}
override class func primaryKey() -> String? {
return "id"
}
person 在数据中,我正在检索它并放入 personJson
self.personJson = json["data"] as AnyObject
最后投射到我的模型中
self.psInfo = Mapper<person>().map(JSONObject: self.personJson)!
我的 DefaultAddress 是 nill 因为我在 model.all 中声明它是错误的方式因为 realm
这太长了所以我 post 我在这里回复。
好吧,要理解转换 Class,您需要知道我们可以在 JSON 中使用的基本类型很少(例如 int、bool string、array 等)。现在 Realm List 不属于这些类型中的任何一种,因此为了将原始类型转换为所需的类型,例如 List<>
,您将不得不使用 ObjectMapper 中的 TransformType。
我相信你的 JSOn 有地址列表数组,它决不能映射到 List<>
所以,为了将数组转换为 List<>
类型,你需要一个转换Class。如果您在 ObjectMapper 库中看到,您会看到一些已经内置的 Transform Class e.g DateTransform()
会将时间戳字符串转换为 Swift Date
.
这就是为什么您要么必须自己编写转换 class,要么已经有一个专门为此构建的库,在 GitHub -> ObjectMapper-Realm