gpt4 book ai didi

ios - 核心数据功能的最佳实践

转载 作者:可可西里 更新时间:2023-11-01 05:42:23 27 4
gpt4 key购买 nike

当您有多个调用类似核心数据的 View Controller 时,在使用核心数据的 iPhone 应用程序中使用什么是最佳设计?

目前我有一个应用程序,它有几个 View Controller ,它们都执行类似的功能,比如向实体添加对象、删除实体等。我认为有几种方法可以处理这个问题:

  1. 每个 View Controller 都有自己的 addItem:blah 类。缺点是这会导致类(class)之间出现一些复制面食

  2. 创建一个具有核心数据方法的父类(super class),并从该类继承。必要时覆盖

  3. 创建一个类别,以便 View Controller 的所有实例都具有这些方法,而无需子类化

  4. 创建一个可以调用的数据管理器单例。拥有它可能很有用,这样我就可以在每个 View Controller 之外对请求进行排队和数据管理。缺点是总的来说这是个坏主意

最佳答案

CoreData 和 ViewController 不需要相互了解。

UIViewControllers 不是 MVC 世界中的传统 Controller 。它们与 View 的耦合度更高——我更愿意在创建它们时考虑到这一点,(大多数 Apple 示例代码都有很多 ModelController 代码——可能是为了简化示例)。

我喜欢创建 ModelController 并让我的 ViewController 管理我的 View ,并且我为我的 ViewController 提供我的 ModelController 的一个实例。

我的 ModelController 将管理我的模型、加载、编辑、删除等...我仍然将我的模型类暴露给我的 ViewController,但 View 永远不会离开 ViewController。您永远不会在 ModelController 中看到 View 。

这样做的好处是,如果您稍后创建一个 iPad 应用程序 - 您的模型及其行为方式完全独立于您的 ViewControllers,因此当您为您的 iPad 应用程序创建一些新的 UIViewControllers 时 - 您可以插入您的 ModelControllers。

您的 ModelController 可能有一个具有重复 CRUD 方法的父类。

或者……

一个名为 MagicalRecord 的库 https://github.com/magicalpanda/MagicalRecord将 Active Record 模式添加到 NSManagedObjects。

关于ios - 核心数据功能的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8872459/

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