对于操纵模型而言,核心数据并非易事。
在我使用Core Data之前,我使用一个简单的sqlite3数据库,并操纵我分配和修改我想要的对象。
但是使用Core Data,如果我修改一个实体或删除我创建它的上下文......这对我的应用程序的协调非常危险。
我的问题很简单,你如何安全地操纵实体呢?
您是否仅将实体用于保存,删除,更新和获取持久存储,或者您在实体中编写函数并将其用作真实对象?
例如,我有一个包含许多叠加层的地图,每个叠加层都有播放器。 我创建了四个对象:MyAppPlayer:Models,Player:Entity,MyAppOverlay:Models,Overlay:Entity。 MyAppPlayer加载和存储实体,这是一个好习惯吗? 如果不是,你好吗?
答案 0 :(得分:2)
核心数据是对象图,而不是数据库。
您应该将Core Data视为对象持久性的支柱。持久性存储包含数据,自定义类包含功能。
是的,请为您的类文件添加自定义功能。这就是他们在这里的目的。
但是,请务必了解这些概念。您没有“删除上下文”。它只是一个方便的“暂存器”,可用于数据处理。您将上下文传递给控制器,以便他们可以访问和操作数据。
在您的情况下,无需区分“模型”和“实体”。实体确实是模型的一部分(在我们的NSManagedObjectModel中定义)。这很简单:创建依赖于自定义实体作为数据源的地图叠加层。
答案 1 :(得分:1)
将实体视为表,将属性视为列。关系(一对多,多对多等)也非常相似,因为CoreData只使用SQLite作为持久存储。实体可以具有多个属性和关系。如果您熟悉SQL,那么这一切都应该有意义。您可以打开SQLite存储文件,看看CoreData如何组织事情以消除任何混淆。