更新CoreData模型版本时如何为实体的新属性设置默认值
Posted
技术标签:
【中文标题】更新CoreData模型版本时如何为实体的新属性设置默认值【英文标题】:How to set default value for new attribute of an Entity when update CoreData Model Version 【发布时间】:2012-03-20 15:44:35 【问题描述】:我使用 CoreData 来保存我的应用程序的数据。有一个实体名称 FriendInfo。现在我更新 CoreData 模型版本,并为 FriendInfo 添加一个属性“isBlock”,并将默认值设置为 YES。当我再次运行应用程序并插入一些 FriendInfo 时,我发现新记录的属性“isBlock”的值为 YES(在 SQLite 中值为 1)。但是旧记录的值是 NULL 而不是 YES。谁能告诉我如何设置旧记录的默认值?
【问题讨论】:
【参考方案1】:我猜你必须运行一些代码来更新默认值。在 MSSQL Server 和 mysql 中,默认值仅适用于新记录。我们必须运行 SQL 来更新旧记录。我认为 SQLite 应该是同样的情况
【讨论】:
非常感谢@Jun1st。我认为您是对的,我找到了另一种方法:将新属性“isBlock”设置为非可选。然后在运行应用程序后,所有存在记录的属性“isBlock”将被设置为NO。 也许您可以尝试删除该列,然后将其重新添加回来,将默认设置为“YES”而不是 NULL。所有存在记录的“isBlock”都应该是YES。以上是关于更新CoreData模型版本时如何为实体的新属性设置默认值的主要内容,如果未能解决你的问题,请参考以下文章
当您知道没有保存实体时如何处理 CoreData 中的获取请求
在 CoreData 实体中将属性从 NSNumber 转换为 NSString - LightWeightMigration