我有不同的领域模型。他们有列表属性。我想制定一种从列表属性中删除对象的通用方法。所以我做了以下事情:
if let list = self[property.name] as? ListBase {
list._rlmArray.removeAllObjects()
}
但这只是清除列表属性,而不是从领域中删除对象。我发现的唯一方法是:
if let list = self[property.name] as? ListBase {
while list.count > 0 {
let object = list._rlmArray.firstObject()
let any = object as Any
if let theObject = any as? Object {
realm.delete(theObject)
}
}
}
上面的代码有效并且不会生成任何警告。但看起来很丑。
您可以使用
dynamicList(_ propertyName: String)
通过名称而不是下标来检索 List
属性。
if property.type == .array {
try! realm?.write {
realm?.delete(dynamicList(property.name))
}
}
当 Realm 删除 ListBase 时,以下解决方案对我有用。 使用
RLMSwiftCollectionBase
代替 ListBase
。
原始来源: https://github.com/caiyue1993/IceCream/pull/256#issuecomment-1034336992