gpt4 book ai didi

ios - 复合主键域/swift

转载 作者:IT王子 更新时间:2023-10-29 05:10:15 24 4
gpt4 key购买 nike

我是 swift 和 realm 的新手。我想制作一个复合主键,当我尝试这样的事情时:

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' 上不存在

谁能帮我举例说明如何创建复合主键?

最佳答案

对于 Realm 的 1.0.1+:

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)"
}
}

使用示例:

let location = DbLocation()
location.setup(id: 0, tourId: 1)
print(location.compoundKey) // "01"

当然,您可以尝试在 idtourId 上使用各种 didSet 监听器,以确保每次都能正确重写 compoundKey值发生变化。

对于 Realm 的 pre-1.0.1:

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)"
}
}

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

this thread 中了解有关此主题的更多信息争论这个问题的地方。

关于ios - 复合主键域/swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31265666/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com