我在iOS应用中使用了Realm和Swift 3。我有以下代码
//Find all records for the day
func findForToday<T: Object>() -> [T] {
let predicate = NSPredicate(format: "date >= %@ and date <= %@", DateUtil.dayStart(), DateUtil.dayEnd())
return getRealm().objects(T.self).filter(predicate).map { $0 }
}
此上下文中的T
是我的领域模型类,看起来像
class MyModel : Object {
dynamic var id = 0
dynamic var date = NSDate()
override class func primaryKey() -> String? {
return "id"
}
}
我在运行时遇到异常
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`.'
答案 0 :(得分:0)
错误消息表明T
已被推断为Object
而不是MyModel
,因此您需要调整调用网站以确保Swift选择正确的类型。
答案 1 :(得分:0)
你好解决了这个问题。 在我的情况下,如果我打电话给你的func&#34; findForToday&#34;像
让myArray = MyModel()。findForToday() 我得到了同样的错误
但在我指定值类型错误丢失后。
让myArray:AnyRealmCollection&lt;为MyModel&GT; = MyModel()。findForToday()
答案 2 :(得分:0)
这个问题已经很老了,但是您似乎没有将对象添加到Realm配置中:
var realmOnDisc: Realm? {
let url = ...URL to your file
let objectTypes = [MyModel.self, SomeOtherModel.self]
let config = Realm.Configuration(fileURL: url,
deleteRealmIfMigrationNeeded:true,
objectTypes: objectTypes)
do {
let realm = try Realm(configuration: config)
return realm
} catch let error {
log.error("\(error)")
return nil
}
}