gpt4 book ai didi

swift - 如何添加要设置的 Realm 对象

转载 作者:行者123 更新时间:2023-11-28 13:39:40 26 4
gpt4 key购买 nike

我想将 setRealm Object 一起使用。

主键不得更改,并且必须是唯一的。
所以我添加了另一个用于比较的变量。
我重写了 isEqual(:) 函数。

class Model: Object {
@objc dynamic var key = ""
@objc dynamic var id = ""

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

override func isEqual(_ object: Any?) -> Bool {
if let object = object as? Model {
if self.id == object.id {
return true
} else {
return false
}
} else {
return false
}
}
}

let model1 = Model()
model1.key = UUID().uuidString
model1.id = "hi"

let model2 = Model()
model2.key = UUID().uuidString
model2.id = "hi"

let model1Array = [model1]
let model2Array = [model2]

let set1 = Set(model1Array)
let set2 = Set(model2Array)

let result = set1.intersection(set2)
print(result) // []

我想对 Realm 对象使用 set
但是我该怎么做呢??

我需要并集交集减法等等...
我必须比较 20,000 多个模型。 (20000 * 20000 = 400000000)
原来应用程序内存不足。
我想解决这个问题。

最佳答案

self.id 中删除 self 可以解决您的问题,您将获得预期的结果。这似乎是一个错误,但不确定它为什么存在。您还可以将属性相等性检查简化为 return id == otherModel.id

class Model: Object {
@objc dynamic var key = ""
@objc dynamic var id = ""

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

override func isEqual(_ object: Any?) -> Bool {
if let otherModel = object as? Model {
return id == otherModel.id
} else {
return false
}
}
}

关于swift - 如何添加要设置的 Realm 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56219093/

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