我更新了我的数据模型并在应用程序中编写了迁移:每个Realm文档中的didFinishLaunchingWithOptions:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
let config = Realm.Configuration(
schemaVersion: 1,
migrationBlock: { migration, oldSchemaVersion in
if (oldSchemaVersion < 1) {
}
})
Realm.Configuration.defaultConfiguration = config
let realm = try! Realm()
我的初始VC有一个tableView,并嵌入一个调用领域的导航控制器中,如下所示:
class AllRoundsVC: UIViewController, UITableViewDelegate, UITableViewDataSource {
let realm = try! Realm()
当我这样离开时,我的应用程序在发布时崩溃,说“致命错误:'试试!'表达式意外地引发了错误:Error Domain = io.realm Code = 0“提供的模式版本0小于上次设置的版本1.”UserInfo = {NSLocalizedDescription =提供的模式版本0小于上次设置的版本1.}
然而,当我在导航控制器的前面放置一个虚拟VC时,只需一个简单的按钮即可切换到导航控制器,一切正常。我知道这与在初始VC之前或之后加载的appDidFinishLaunchingWithOptions有关。
我的问题是,如何在仍然调用try时停止崩溃!我最初的VC上的Realm()?我不想在tableView中保留一个毫无意义的VC,只是为了加载正确的架构。
由于
答案 0 :(得分:0)
How can I get the migration to run before the app starts to run the code?
答案 1 :(得分:-1)
我遇到了同样的问题。我收到此错误:Realm schema version 1 is less than last set version 3 Swift
以下是需要做的:
public lazy var realmConfig: Realm.Configuration = {
var config = Realm.Configuration()
config.schemaVersion = 3 //the old code is 'config.schemaVersion = 1'
config.migrationBlock = { newSchemaVersion, oldSchemaVersion in
if oldSchemaVersion < 3 {}
if oldSchemaVersion < 2 {}
if oldSchemaVersion < 1 {}
}
return config
}()
当您使用config.schemaVersion = 3
运行应用程序时,领域不能设置为低于3。因此您最好不要使用appbuild(kCFBundleVersionKey)
来设置realmConfig.schemaVersion
。