RealmSwiftObject 不由 Realm 管理。使用返回的 class 获取对象
RealmSwiftObject is not managed by the Realm. Fetch objects with returned class
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
.'
为什么会出现崩溃,如何解决?我需要一个用于枚举的 var 来将 Realm 对象与枚举案例相关联。
代码对我有用,只需一个更改 - 我使用 DogClass 和 PersonClass 进行测试,所以我有一个像你的 class 枚举
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"
}
}
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
.'
为什么会出现崩溃,如何解决?我需要一个用于枚举的 var 来将 Realm 对象与枚举案例相关联。
代码对我有用,只需一个更改 - 我使用 DogClass 和 PersonClass 进行测试,所以我有一个像你的 class 枚举
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"
}
}