复合主键领域/ swift

hal*_*red 24 realm ios swift

我是快速和领域的新手.我想制作一个复合主键,当我尝试这样的事情时:

class DbLocation : Object {
 dynamic var id = 0
 dynamic var tourId = 0

 dynamic var uuid : String  {
    return "\(id)\(tourId)"
 }

 override static func primaryKey() -> String? {
    return "uuid"
 }
}
Run Code Online (Sandbox Code Playgroud)

我收到此错误:'对象'DbLocation'上不存在主键属性'uuid'

任何人都可以帮我解决如何创建复合主键的示例?

Mic*_*hal 27

这应该给你答案:

class DbLocation: Object{
    dynamic var id = 0
    dynamic var tourId = 0
    dynamic var compoundKey = ""

    override static func primaryKey() -> String? {
        return "compoundKey"
    }

    func setup(id: Int, tourId: Int){
        self.id = id
        self.tourId = tourId
        self.compoundKey = compoundKeyValue()
    }

    func compoundKeyValue() -> String {
        return "\(id)\(tourId)"
    }
}
Run Code Online (Sandbox Code Playgroud)

自定义setter确保复合键始终更新,懒惰关键字确保您第一次访问它时,它将从您已设置的内容中派生出来.

了解更多关于这个话题在这个线程哪里这个问题一直争论不休.

  • 由于未捕获的异常'RLMException',我得到了终止应用程序,原因是:在Realm Swift对象类上不允许使用'懒惰的托管属性'compoundKey'.将属性添加到被忽略的属性列表中或将其设置为非延迟. (3认同)
  • 您好,我收到“由于未捕获的异常‘RLMException’而终止应用程序,原因:Realm Swift 对象类上不允许使用惰性托管属性‘compoundKey’。要么将该属性添加到忽略的属性列表中,要么使其成为非惰性属性”。在惰性复合键上。 (2认同)