RealmSwiftObject不受Realm管理。使用返回的类获取对象

enum DummyEnum {
    case spiderMan
    case anotherMan
    case tanos
    case duppy

    var associatedClass: Object.Type {
        switch self {
        case .spiderMan:
            return WebEntity.self
        default:
            return ironManEntity.self
        }
    }
}

realm.objects(DummyEnum().spiderMan.associatedClass) // returns crash
realm.objects(WebEntity.self) // done well
  

由于未捕获的异常“ RLMException”而终止应用程序,原因:   '对象类型'RealmSwiftObject'不由Realm管理。如果使用   配置中的自定义objectClasses / objectTypes数组,   将RealmSwiftObject添加到objectClasses的列表中/   objectTypes。'

为什么发生崩溃以及如何解决?我需要一个用于枚举的变量,以将Realm对象与枚举案例相关联。

YJX690271813 回答:RealmSwiftObject不受Realm管理。使用返回的类获取对象

代码对我来说只有一个变化-我使用DogClass和PersonClass进行测试,所以我有一个像你一样的类枚举

enum realmClasses {
    case dog
    case person

    var associatedClass: Object.Type {
        switch self {
        case .dog:
            return DogClass.self
        case .person:
            return PersonClass.self
        }
    }
}

然后在一个函数中读取所有的狗

let realm = try! Realm()
let dogResults = realm.objects(realmClasses.dog.associatedClass)
for dog in dogResults {
    print(dog)
}

区别在于枚举的访问方式。你有这个

DummyEnum().spiderMan.associatedClass
         ^^

我有这个,注意没有(),因为实现我的枚举并不需要

realmClasses.dog.associatedClass

哦-我的任何DogClass和PersonClass都像这样

class DogClass: Object {
    @objc dynamic var dog_id = NSUUID().uuidString
    @objc dynamic var dog_name = ""

    override static func primaryKey() -> String? {
        return "dog_id"
    }
}
本文链接:https://www.f2er.com/3092270.html

大家都在问