如何设置领域模型的成员对象的属性?

时间:2017-03-05 12:57:45

标签: swift realm

我有一个名为DiscoverUserInfo的领域对象:

class DiscoverUserInfo: Object , Mappable{

    dynamic var UserObject:User?
    dynamic var ConnectionStatus:Int = -1
    var PreviousMeetings = List<Meeting>()

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

    override class func primaryKey() -> String? { return "UserObject.UserId" }

}

现在,我想设置一个UserId UserObject的主键。

但是当我运行此代码时,我收到此错误:

  

由于未捕获的异常终止应用&#39; RLMException&#39;,原因:   &#39;主键属性&#39; UserObject.UserId&#39;在对象上不存在   &#39; DiscoverUserInfo&#39;&#39;

1 个答案:

答案 0 :(得分:0)

您无法使用动态变量的属性设置主键。你必须做这样的事情:

class DiscoverUserInfo: Object , Mappable{

    dynamic var UserObject: User?
    dynamic var id = ""
    dynamic var ConnectionStatus:Int = -1
    var PreviousMeetings = List<Meeting>()

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

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

}

然后在每次创建新的DiscoverUserInfo对象时将id设置为关联的UserObject的UserId。

这与Realm中对复合主键没有本机支持的问题有关。但是,我们希望看到这个功能。