gpt4 book ai didi

swift - Realm ;使将来迁移所需的可选属性

转载 作者:行者123 更新时间:2023-11-28 16:04:14 32 4
gpt4 key购买 nike

我有一个 Realm 模型,它有一个可选的 NSDate 属性 expiryDate,它存储对象在之后将不再可用的日期。

需要更改此属性,以便需要 expiryDate。因为我们的应用程序有多个版本,所以我想避免在我们的数据层中使用一个函数来检查是否设置了每个对象的 expiryDate 属性,如果没有,将其设置为默认值。

我计划更新我们的架构以替换

dynamic var expiryDate: NSDate?

dynamic var expiryDate: NSDate = NSDate().dateByAddingSeconds(SomeMaxExpiryDateInSeconds)

此更改是否意味着所有以前存储的未设置 expiryDate 的对象都将设置为 NSDate().dateByAddingSeconds(SomeMaxExpiryDateInSeconds) 并保 stub 据境界?还是会在每次访问时重新计算此属性?

最佳答案

可以在 Realm 迁移期间更改值类型,包括将给定属性设为可选或非可选。在迁移过程中,您必须遍历并为之前为 nil 的每个 expiryDate 对象分配一个值。

Realm.Configuration.defaultConfiguration = Realm.Configuration(
schemaVersion: 1,
migrationBlock: { migration, oldSchemaVersion in
if (oldSchemaVersion < 1) {
migration.enumerateObjects(ofType: Object.className()) { oldObject, newObject in
if oldObject["expiryDate"] == nil {
newObject["expiryDate"] = Date().dateByAddingSeconds(SomeMaxExpiryDateInSeconds)
}
}
}
})

关于swift - Realm ;使将来迁移所需的可选属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40525681/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com