领域。从 ListBase 中删除对象

问题描述 投票:0回答:2

我有不同的领域模型。他们有列表属性。我想制定一种从列表属性中删除对象的通用方法。所以我做了以下事情:

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

上面的代码有效并且不会生成任何警告。但看起来很丑。

swift realm
2个回答
0
投票

您可以使用

dynamicList(_ propertyName: String)
通过名称而不是下标来检索
List
属性。

if property.type == .array {
    try! realm?.write {
        realm?.delete(dynamicList(property.name))
    }
}

0
投票

当 Realm 删除 ListBase 时,以下解决方案对我有用。 使用

RLMSwiftCollectionBase
代替
ListBase

原始来源: https://github.com/caiyue1993/IceCream/pull/256#issuecomment-1034336992

© www.soinside.com 2019 - 2024. All rights reserved.