从核心数据中删除实体

Posted

技术标签:

【中文标题】从核心数据中删除实体【英文标题】:Deleting entity from core data 【发布时间】:2018-02-17 21:26:35 【问题描述】:

在制作了我的应用程序的粗略版本之后,我现在正在寻找更好的最终版本,并且有很多改进。这涉及更改持有计时器的实体中的属性。

已经将应用程序放在 TestFlight 上,一些下载内容已经存储了数据。我将删除当前实体并创建一个新实体。如果已经为要删除的实体中的属性存储了数据,这会导致任何问题吗?

重要提示:我不想保留要删除的实体中的任何数据,我想将其全部删除,因此当用户更新时,他们的所有数据都将消失(这很好,因为我只将它分发给我知道例如家人/朋友),他们已经提供了一些反馈。

非常感谢任何帮助。提前致谢。

【问题讨论】:

同一个问题你问了两次。请不要那样做。 是因为我想换个上下文,用更好的方式解释一下。 @D-AUK 仅供参考,在这种情况下最好编辑您现有的问题,而不是创建一个新问题。或者如果你真的想重新开始,删除原来的。 好的 - 请问你有答案吗? 现在写点东西.... 【参考方案1】:

CoreData 非常迂腐。一旦基于数据模型创建了商店,除非您进行某种迁移,否则您不能将其与不同的模型一起使用。在这种情况下,不同意味着对模型的几乎任何更改。当然,如果您尝试使用新模型打开现有商店,更改实体的属性或添加新实体就足以让 CoreData 引发异常。

如果您想保留现有商店中的数据,则必须进行迁移,但由于您不想保留该数据,因此在应用的新版本发布时删除商店会更容易首先运行,让 CoreData 使用新模型创建一个新存储。

【讨论】:

我使用的是相同的数据模型。当您说在第一个版本运行时删除商店时,这需要代码,还是只在实体描述上选择退格键? 这需要代码 - 可能在 AppDelegate 中,当didFinishLaunchingWithOptions 被触发时,或者当 CD 堆栈被创建时。 只是为了删除一个实体描述? 在数据模型编辑器中选择实体时,只需按退格键即可删除数据模型中的实体。但这将注册为模型的更改。然后,您的模型将与现有数据存储不兼容,这就是您需要删除现有存储或使用其他存储的原因。 这很有趣。我删除了核心数据实体描述,此后一切正常。这是为什么呢?

以上是关于从核心数据中删除实体的主要内容,如果未能解决你的问题,请参考以下文章

从核心数据中的实体中删除记录

从核心数据实体中删除对象/行

如何从 Swift 的核心数据中删除特定的实体数据?

SWIFT 的核心数据:如何从关系实体中删除对象?

当我从单独的视图控制器中删除核心数据实体时,为啥会调用 UITableView 方法?

从核心数据中删除记录不起作用?