gpt4 book ai didi

iphone - 轻量级核心数据迁移后,如何为现有实体的新属性设置默认值?

转载 作者:IT王子 更新时间:2023-10-29 07:52:14 26 4
gpt4 key购买 nike

我已成功完成核心数据模型的轻量级迁移。

我的自定义实体 Vehicle 收到一个新属性“tirePressure”,这是一个 double 类型的可选属性,默认值为 0.00。

当从商店中获取“旧”车辆(在迁移发生之前创建的车辆)时,其“tirePressure”属性的值为 nil。 (这是预期的行为吗?)

所以我想:“没问题,我会在 Vehicle 类中这样做:”

- (void)awakeFromFetch {
[super awakeFromFetch];
if (nil == self.tirePressure) {
[self willChangeValueForKey:@"tirePressure"];
self.tirePressure = [NSNumber numberWithDouble:0.0];
[self didChangeValueForKey:@"tirePressure"];
}
}

因为“更改处理被明确禁用” awakeFromFetch我认为对 willChangeValueForKey 和 didChangeValueForKey 的调用会将“tirePresure”标记为脏。

但他们没有。

每次从商店中获取这些车辆时,尽管保存了上下文,“tirePressure”仍然为零。

最佳答案

我终于在 6 个月后弄明白了。

添加到核心数据实体的属性必须标记为非可选的。只有这样,才会在使用旧数据模型创建的实体的轻量级迁移期间自动设置默认值。

关于iphone - 轻量级核心数据迁移后,如何为现有实体的新属性设置默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5867369/

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