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对象与枚举案例关联。
最佳答案
该代码为我工作,但有一个更改-我使用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
^^
并且我有这个,注意no(),因为实现我的枚举并不需要
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"
}
}