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, addRealmSwiftObject
to the list ofobjectClasses
/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/