簡體   English   中英

Swift 3 - 對象類型'RealmSwiftObject'不受Realm異常管理

[英]Swift 3 - Object type 'RealmSwiftObject' is not managed by the Realm exception

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

錯誤消息表明T已被推斷為Object而不是MyModel ,因此您需要調整調用站點以確保Swift選擇正確的類型。

嗨剛解決了這個問題。 在我的情況下,如果我稱你的功能“findForToday”

讓myArray = MyModel()。findForToday(),我得到了同樣的錯誤

但在我指定值類型錯誤丟失后。

let myArray:AnyRealmCollection <MyModel> = MyModel()。findForToday()

問題很舊但看起來你沒有將你的對象添加到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
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM