【问题标题】:Json can not cast data into my modelJson 无法将数据投射到我的模型中
【发布时间】:2018-08-16 09:00:26
【问题描述】:

使用对象映射器和领域作为数据库。

我从我的服务器获取一个 JSON,其中包含我需要更新一些属性然后将其发布到服务器并更新的人员类。

我的 person 模型 类,我无法声明对象列表,这是主要问题

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 中将其声明为错误的方式,因为领域

【问题讨论】:

  • 是的,ObjectMapper 不支持领域列表。所以要么你必须自己创建转换类,要么在github上签出ObjectMapper-realm
  • 什么是转换类??

标签: ios swift realm objectmapper


【解决方案1】:

这很长,所以我在这里发布我的回复。

好的,要了解转换类,您需要知道我们可以在 JSON 中使用的基本类型很少(如 int、bool string、array 等)。现在 Realm List 不属于这些类型中的任何一个,因此为了将原始类型转换为所需的类型,如 List&lt;&gt;,您必须使用 ObjectMapper 中的 TransformType。

我相信您的 JSOn 具有地址列表数组,它决不能映射到 List&lt;&gt; 所以,为了将数组转换为 List&lt;&gt; 类型,您需要一个 TransformClass。如果你在 ObjectMapper Library 中看到,你会看到一些已经内置的 Transform Class e.g DateTransform() 可以将 Timestamp 字符串转换为 Swift Date

这就是为什么你要么必须自己编写转换类,要么已经在 GitHub 上为此构建了一个库 -> ObjectMapper-Realm

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-17
    • 2011-08-11
    • 1970-01-01
    • 2017-08-23
    • 1970-01-01
    • 1970-01-01
    • 2019-11-19
    • 1970-01-01
    相关资源
    最近更新 更多