复合主键realm / 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" } } 

我得到这个错误:'主键属性'uuid'不存在对象'DbLocation'

任何人都可以帮助我一个例子如何创build一个复合主键?

这应该给你答案:

 class DbLocation: Object { dynamic var id = 0 dynamic var tourId = 0 func setCompoundID(id: Int) { self.id = id compoundKey = compoundKeyValue() } func setCompoundTourId(tourId: Int) { self.tourId = tourId compoundKey = compoundKeyValue() } dynamic lazy var compoundKey: String = self.compoundKeyValue() override static func primaryKey() -> String? { return "compoundKey" } func compoundKeyValue() -> String { return "\(id)\(tourId)" } } 

自定义设置器确保compoundKey始终被更新,懒惰的关键字确保您第一次访问它时,它将从您已经设置的内容派生。

在这个讨论这个问题的线索中可以find关于这个主题的更多信息。

简单地创build一个新的属性,其值设置为您期望成为主键的其他属性。

 class DbLocation: Object { dynamic var id = 0 dynamic var tourId = 0 dynamic var compoundKey: String? = "" override static func primaryKey() -> String? { return "compoundKey" } } let location = DbLocation() location.tourId = 1 location.id = 5 location.compoundKey = "\(id) \(tourId)" 

你需要从你的对象返回一个属性

这里是示例代码

 class FoodModel:Object { dynamic var name = "" dynamic var _id = "" override static func primaryKey() -> String? { return "_id" } } 

请注意,_id在模型中是var