gpt4 book ai didi

ios - 解耦核心数据

转载 作者:搜寻专家 更新时间:2023-10-31 22:28:24 24 4
gpt4 key购买 nike

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

由于我正在评估一个新的副项目的几个不同的持久性选项,我很想找到一种方法将核心数据实现与其余代码分开。例如,我可能会改用使用协议(protocol)定义的 DataStore 的概念。它要求任何实现都提供某些功能。例如 getCarsaddCardeleteCar。应用不需要知道 getCars 是否从 Core Data、Realm、本地文件等中获取。

我在 DataStore 的核心数据实现中遇到的一个直接问题是,一旦 Car 作为实体添加到数据模型中,我无法创建 Car 对象,除非通过指定的初始化程序,它需要插入一个上下文。这显然不会成功,因为重点是将 NSManagedObjectContext 等的任何知识与各种 View Controller 和其他类分开。

我正在考虑为我所有的核心数据实体使用其他名称(例如 CDCar),然后添加一堆代码用于映射到/从 CDCar汽车。或者可能为 Car 制定一个协议(protocol)以供应用程序中的一般用途,CDCar 将遵守该协议(protocol)。有更通用的方法吗?

最佳答案

添加并行实体会增加很多复杂性,以至于不清楚解耦是否会产生净 yield 。

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

关于ios - 解耦核心数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43279222/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com