我有一个提醒对象,我刚刚对其进行了修改。这是原始版本:
class Reminder: Object {
@objc dynamic var title = ""
@objc dynamic var parents = ""
@objc dynamic var lists = "All"
@objc dynamic var labels = "All"
@objc dynamic var priority =
@objc dynamic var notes = ""
@objc dynamic var reminderType = .none
}
这是新版本:
class Reminder: Object {
@objc dynamic var title = ""
@objc dynamic var parents = ""
@objc dynamic var lists = "All"
@objc dynamic var dueDate = 0.0
@objc dynamic var reminderDate = 0.0
@objc dynamic var reminderLocation = ""
@objc dynamic var labels = "All"
@objc dynamic var priority = 1
@objc dynamic var notes = ""
}
我已经实现了AppDelegate的迁移块didFinishLaunchingWithOptions
方法。在这里:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
///Realm migration
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: 2,
// 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
if oldSchemaVersion < 2 {
}
}
)
Realm.Configuration.defaultConfiguration = config
let _ = try! Realm()
return true
}
根据文档,我认为它应该是功能上的迁移。但是,在编译应用程序时出现以下错误:
Fatal error: 'try!' expression unexpectedly raised an error: Error Domain=io.realm Code=10 "Migration is required due to the following errors:
- Property 'Reminder.reminderLocation' has been added.
- Property 'Reminder.reminderDate' has been added.
- Property 'Reminder.dueDate' has been added.
- Property 'Reminder.reminderType' has been removed."
我在迁移区块中应该更改什么?
提前谢谢
答案 0 :(得分:0)
当存储的数据与代码中的模型不匹配时,将引发此异常。
您不需要在迁移块中做任何事情,但是您需要通过更新Realm.Configuration.schemaVersion
的值来触发迁移,例如:
schemaVersion: 3,