我正在嘗試使用記錄的方法之一來遷移領域數據庫並設置架構版本。我正在使用的代碼的類型是:領域遷移,從何初始化
let config = Realm.Configuration(
// Set the new schema version. This must be greater than the previously used
// version (if you've never set a schema version before, the version is 0).
schemaVersion: 1,
// Set the block which will be called automatically when opening a Realm with
// a schema version lower than the one set above
migrationBlock: { migration, oldSchemaVersion in
// We haven’t migrated anything yet, so oldSchemaVersion == 0
if (oldSchemaVersion < 1) {
// Nothing to do!
// Realm will automatically detect new properties and removed properties
// And will update the schema on disk automatically
}
})
// Tell Realm to use this new configuration object for the default Realm
Realm.Configuration.defaultConfiguration = config
這似乎是非常標準的代碼,並且看起來被別人使用。然而,似乎讓我絆倒的是我正在初始化導致架構設置不設置或持續的Realm實例。
我所用是掙扎在哪裏設置如下代碼:
let uiRealm = try! Realm()
- 如果我把這個在AppDelegate中的頂部上方如果我創建一個控制器@UIApplicationMain它初始化太早
- 文件,我打算在遷移後調用一個函數,並將其放在頂部,但仍然不起作用
如果我將它放在ViewController的類中,如下面的代碼所示,錯誤Instanc Ë成員uiRealm不能在類型XYZViewController使用
import UIKit import RealmSwift class XYZViewController: UITableViewController,UIPickerViewDataSource,UIPickerViewDelegate { let uiRealm = try! Realm() var scenarios = uiRealm.objects(Scenario).filter("isActive = true ") }
所以我的問題是:是否有在哪裏初始化的最佳做法,以及如何最好地遷移。
感謝您的支持,那麼如何將以下內容轉換爲惰性初始化? scenario = uiRealm.objects(Scenario).filter(「isActive = true」)。如果我只是懶惰在前面我得到錯誤「使用未解析的標識符uiRealm」 –
不用擔心!嗯,有沒有什麼理由不使用Realm()代替uiRealm? – TiM
嗨,我通過聲明var方案來解決這個問題:結果!在頂部,然後在每個函數內初始化領域。我又一次嘗試做太多的全球食用,並將所有東西都轉化爲功能。 –