首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >解耦核心数据

解耦核心数据
EN

Stack Overflow用户
提问于 2017-04-07 13:19:28
回答 1查看 432关注 0票数 5

我编写的大多数使用核心数据的应用程序都遵循共同的模式--模型类继承自NSManagedObject,并通过插入到NSManagedObjectContext中创建。

由于我正在评估一个新的侧项目中的几个不同的持久性选项,所以我希望找到一种方法将核心数据实现与代码的其余部分分离开来。例如,我可以使用使用协议定义的DataStore的概念。它要求任何实现都提供特定的功能。例如,getCarsaddCardeleteCar。应用程序不需要知道getCars是否从核心数据、领域、本地文件等中提取。

我在DataStore的核心数据实现中遇到的一个直接问题是,一旦Car作为实体添加到数据模型中,我就不能创建一个Car对象,除非通过指定的初始化器,它需要插入一个上下文。这显然是行不通的,因为重点是将NSManagedObjectContext等方面的任何知识从各种视图控制器和其他类中分离出来。

我正在考虑为我的所有核心数据实体(例如CDCar)使用其他名称,然后添加一堆代码来映射到/从CDCarCar。或者可能为Car制定一个协议,以便在应用程序中通用,而CDCar将遵循该协议。是否有更普遍的方法来解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-07 15:07:29

添加一个并行实体会增加许多复杂性,以至于不清楚解耦是否是一个净好处。

我要做的是在DataStore类中包括工厂方法,以便根据需要创建实例。与非DataStore代码直接创建Car不同,它将在DataStore上调用一个新的createCar方法。DataStore做它需要做的任何事情来创建一个有效的实例并返回结果。这可能意味着您不需要addCar,因为您不会在DataStore之外创建实例。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43279222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档