Как каскадно удалить объект со свойством List <Int>в Realm Swift - PullRequest
0 голосов
/ 28 января 2019

У меня есть свойство типа List<Int> в RealmObject.Но я не могу сделать причину удаления этого каскада.

У меня есть свойство List<Int>(), а затем в init я установил в этот массив свойств несколько целых чисел.Затем я пытаюсь удалить объект и получаю следующую ошибку:

Невозможно привести значение типа '__NSCFNumber' (0x10dba87d8) к 'RLMObjectBase' (0x10b21b708).

2019-01-27 01: 10: 43.524057 + 0300 Ибица [25129: 3982818] Не удалось привести значение типа '__NSCFNumber' (0x10dba87d8) к 'RLMObjectBase' (0x10b21b708).

Вот моя реализация каскада:

func cascadeDelete(_ entity: RLMObjectBase) {
    guard let entity = entity as? Object else { return }
    var toBeDeleted = Set<RLMObjectBase>()
    toBeDeleted.insert(entity)
    while !toBeDeleted.isEmpty {
        guard let element = toBeDeleted.removeFirst() as? Object,
            !element.isInvalidated else { continue }
        resolve(element: element, toBeDeleted: &toBeDeleted)
    }
}

func resolve(element: Object, toBeDeleted: inout Set<RLMObjectBase>) {
    element.objectSchema.properties.forEach {
        guard let value = element.value(forKey: $0.name) else { return }
        if let entity = value as? RLMObjectBase {
            toBeDeleted.insert(entity)
        } else if let list = value as? RealmSwift.ListBase {
            for index in 0..<list._rlmArray.count {
                toBeDeleted.insert(list._rlmArray.object(at: index) as! RLMObjectBase)                 }
        }
    }
    delete(element)
}

Ошибка в этой строке кода:

toBeDeleted.insert(list._rlmArray.object(at: index) as! RLMObjectBase)
...