0

核心数据对于操纵模型来说并非易事。

在我使用 Core Data 之前,我使用了一个简单的 sqlite3 数据库并操作我分配的对象并修改我想要的方式。

但是对于Core Data,如果我修改一个实体或删除我创建它的上下文......这对于我的应用程序的协调来说真的很危险。

我的问题很简单,您如何安全地操作实体?

您是否将实体仅用于保存、删除、更新和获取持久存储,或者您在实体中编写函数并像使用真实对象一样使用它?

例如,我有一张有很多叠加层的地图,每个叠加层都有玩家。我创建了四个对象:MyAppPlayer:Models,Player:Entity,MyAppOverlay:Models,Overlay:Entity。MyAppPlayer 加载和存储实体,这是一个好习惯吗?如果没有,你怎么办?

4

2 回答 2

2

Core Data 是一个对象图,而不是数据库。

您应该将 Core Data 简单地视为对象持久性的支柱。持久存储包含数据,您的自定义类包含功能。

是的,请向您的类文件添加自定义功能。这就是他们来这里的目的。

但是,请确保您了解这些概念。您不会“删除上下文”。它只是一个方便的“便签本”,用于您的数据操作。您将上下文传递给您的控制器,以便他们可以访问和操作数据。

在您的情况下,无需区分“模型”和“实体”。实体确实是模型的一部分(在我们的 NSManagedObjectModel 中定义)。这很简单:创建依赖自定义实体作为数据源的地图叠加层。

于 2013-04-22T14:36:10.420 回答
1

将实体视为表,将属性视为列。关系(一对多、多对多等)也非常相似,因为 CoreData 只是使用 SQLite 作为它的持久存储。实体可以有多个属性和关系。如果您熟悉 SQL,那么这一切都应该是有意义的。您可以打开 SQLite 存储文件并查看 CoreData 如何组织事物以消除任何混乱。

于 2013-04-22T14:11:23.440 回答