REALM MAPPING null

时间:2017-05-31 15:14:15

标签: ios swift realm

{
  "in_app": [
    {
      "email": "hfqfqlo@qudqg.in",
      "active_platforms": [
        "email"
      ],
      "type": "primary_email",
      "linked_to": {
        "_id": "59245c790550bb34cd42e51d",
        "company": "ABC Corp",
        "image": " ",
        "designation": "CEO",
        "name": "John Doe"
      }
    },
    {
      "email": "knowprff2ashant123afafafafafyadav@gmail.com",
      "active_platforms": [
        "email"
      ],
      "type": "primary_email",
      "linked_to": {
        "_id": "5926b5d780ff2ad821a669dab134d",
        "company": null,
        "image": null,
        "designation": null,
        "name": null
      }
    }
  ]
}

InAppUser模型

class InAppUser: Object, Mappable{
    dynamic var email: String = ""
    dynamic var type: String = ""
    dynamic var linked_to: AppUser?

    required convenience init?(map: Map) {
        self.init()
    }


    func mapping(map: Map) {
        email <- map["email"]
        type <- map["type"]
        linked_to <- map["linked_to"]

    }

}

class AppUser : Object, Mappable {

    dynamic var userId: String = ""
    dynamic var company: String = ""
    dynamic var designation: String = ""
    dynamic var name: String = ""
    dynamic var image: String = ""
    dynamic var email: String = ""


    override class func primaryKey() -> String? {
        return "email"
    }

    required convenience init?(map: Map) {
        self.init()
    }

    func mapping(map: Map) {
        userId <- map["_id"]
        company <- map["company"]
        designation <- map["designation"]
        name <- map["name"]
        image <- map["image"]
        email <- map["login_email"]
    }
}

当我打印我的条目时,它会在第一个&#34; linked_to&#34;中显示正确的值。但后来当我拉动所有领域对象时,只有ID进来&#34; linked_to&#34;和null的其他名称等hfqfqlo@qudqg.in

hfqfqlo@qudqg.in有名字,但现在仍在显示。对于knowprff2ashant123afafafafafyadav@gmail.com它很好,因为它正在返回null

1 个答案:

答案 0 :(得分:1)

您已将电子邮件设置为AppUser上的主键,并将其映射到&#34; login_email&#34;。在您的JSON中,您没有任何&#34; login_email&#34;对于linked_to部分,因此主键始终为空字符串(您设置的默认值为&#34;&#34;)。所以实际上你总是覆盖同一个AppUser。数组中的最后一个字段将所有字段都设置为null,因此最终所有属性中的所有用户(或实际上唯一的用户)都为null。

你应该确保所有&#34; linked_to&#34;你的json中的用户有一个&#34; login_email&#34;或者将您的主键更改为实际上唯一的内容,例如userId。