复合主键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