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

时间:2016-10-10 14:45:50

标签: ios swift realm

我在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`.'

3 个答案:

答案 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
        }
    }