ios - RealmSwiftObject 不受 Realm 管理。获取带有返回类的对象

标签 ios swift 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

Terminating app due to uncaught exception 'RLMException', reason: 'Object type 'RealmSwiftObject' is not managed by the Realm. If using a custom objectClasses / objectTypes array in your configuration, add RealmSwiftObject to the list of objectClasses / objectTypes.'

为什么会发生崩溃以及如何解决?我需要一个枚举变量来将 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"
    }
}

关于ios - RealmSwiftObject 不受 Realm 管理。获取带有返回类的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58885481/

相关文章:

ios - Xcode 正在向我的包标识符添加破折号

ios - ios核心数据关系查询

ios - 如何在 Swift 中为 NSManagedObject 子类指定初始化器?

xcode - Swift - 检索 subview

ios - Realm 集合通知和 Collection View 计数之间的不同步

ios - Realm 与 Firestore 上的大型集契约(Contract)步 - 架构问题/问题

iphone - 在 iphone 中选择应用内购买项目的困惑

ios - 我想为按钮和下面的方法编写一个OCMock单元测试。我该怎么写?

swiftcornerRadius仅左下角和右上角?

ios - Int64存储在Realm中无法转换