本地领域迁移不起作用 Swift
Local Realm migration not working Swift
不知道是不是漏了什么
我在更新 属性 后 运行 在没有迁移块的情况下安装我的应用程序后发生崩溃(与此处相同的问题 )
但现在当我 运行 应用程序时,它必须 运行 迁移,因为它不再崩溃但我的对象的属性没有更新。
我更新了以下对象("minReps" 是我添加的对象):
class ExerciseGeneratorObject: Object {
@objc dynamic var name = ""
@objc dynamic var minReps = 0
@objc dynamic var maxReps = 0
convenience init(name: String, minReps: Int, maxReps: Int) {
self.init()
self.name = name
self.minReps = minReps
self.maxReps = maxReps
}
然后我 运行在 appDelegate 中创建一个像这样的空迁移块:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
let config = Realm.Configuration(
schemaVersion: 3,
migrationBlock: { migration, oldSchemaVersion in
if (oldSchemaVersion < 3) {
}
})
Realm.Configuration.defaultConfiguration = config
let realm = try! Realm()
我认为如果您 运行 一个空的迁移块,Realm 会自动更新对象属性 - 这是错误的吗?我是否缺少一些代码来完成这项工作?
这里有一个非常相似的问题 ()(这不是我!)但现在看起来已经过时了(当然我已经尝试过上面的解决方案了!)
当前模式版本应该通过领域配置在应用程序中设置,你应该增加它,在你的代码中你将模式版本设置为 3,并要求领域迁移领域如果 oldSchemaVersion 小于 3,将模式版本设置为4,它会起作用
var 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: 4,
// 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 < 3) {
// Nothing to do!
// Realm will automatically detect new properties and removed properties
// And will update the schema on disk automatically
}
})
Realm.Configuration.defaultConfiguration = config
config = Realm.Configuration()
config.deleteRealmIfMigrationNeeded = true
不知道是不是漏了什么
我在更新 属性 后 运行 在没有迁移块的情况下安装我的应用程序后发生崩溃(与此处相同的问题
但现在当我 运行 应用程序时,它必须 运行 迁移,因为它不再崩溃但我的对象的属性没有更新。
我更新了以下对象("minReps" 是我添加的对象):
class ExerciseGeneratorObject: Object {
@objc dynamic var name = ""
@objc dynamic var minReps = 0
@objc dynamic var maxReps = 0
convenience init(name: String, minReps: Int, maxReps: Int) {
self.init()
self.name = name
self.minReps = minReps
self.maxReps = maxReps
}
然后我 运行在 appDelegate 中创建一个像这样的空迁移块:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
let config = Realm.Configuration(
schemaVersion: 3,
migrationBlock: { migration, oldSchemaVersion in
if (oldSchemaVersion < 3) {
}
})
Realm.Configuration.defaultConfiguration = config
let realm = try! Realm()
我认为如果您 运行 一个空的迁移块,Realm 会自动更新对象属性 - 这是错误的吗?我是否缺少一些代码来完成这项工作?
这里有一个非常相似的问题 (
当前模式版本应该通过领域配置在应用程序中设置,你应该增加它,在你的代码中你将模式版本设置为 3,并要求领域迁移领域如果 oldSchemaVersion 小于 3,将模式版本设置为4,它会起作用
var 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: 4,
// 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 < 3) {
// Nothing to do!
// Realm will automatically detect new properties and removed properties
// And will update the schema on disk automatically
}
})
Realm.Configuration.defaultConfiguration = config
config = Realm.Configuration()
config.deleteRealmIfMigrationNeeded = true