Swift 3 - 对象类型“RealmSwiftObject”不受 Realm 异常管理

Jas*_*bas 5 realm ios swift

我在我的 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 }
}
Run Code Online (Sandbox Code Playgroud)

其中,T在这方面是一个看起来像我的境界模型类

class MyModel : Object {

    dynamic var id = 0
    dynamic var date = NSDate()

    override class func primaryKey() -> String? {
        return "id"
    }

}
Run Code Online (Sandbox Code Playgroud)

我在运行时遇到异常说

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`.'
Run Code Online (Sandbox Code Playgroud)

Tho*_*yne 4

错误消息表明 已T被推断为Object而不是MyModel,因此您需要调整调用站点以确保 Swift 选择正确的类型。

  • @JaseemAbbas 你如何调用`findForToday()`?您可以显式指定 `MyModel`,例如 `let Todays:[MyModel] = findForToday()` 或 `let Todays = findForToday() as [MyModel]` (2认同)