iOS MVC : get view controller class from model?

标签 ios model-view-controller core-data

我有一些由自定义 NSManagedObject 类管理的实体。它们被列在不同的 View Controller 中。托管对象子类具有公共(public)抽象父类(super class),它拥有公共(public)属性(假设其 title 为 NSString 和 favorite 为 BOOL)。我有收藏夹的 View Controller ,它列出了,以及......所有具有 favorite 属性的实体。由于收藏夹具有不同的类 - 从这些托管对象的抽象父类(super class)的适当子类派生(或获取) View Controller 类是否正常?我在这里破坏了 MVC 吗?

更新

sergio 的一些说明:假设我有抽象父类(super class) Animal 和子类,例如 CatDog。这些实例代表个体动物(如有名字的动物)。然后我有 CatsViewController 和 DogsViewController。它们列出了适当的 Animal 子类的实例。我还有 CatDetailsViewController 和 DogDetailsViewController,它们代表托管对象的单个实例。然后我有 FavoritesViewController,它在表格中列出了猫和狗。点击一行后,我想将用户带到适当的 CatDetail 或 DogDetail View Controller 。这就是问题所在——我能否从托管对象的实例中派生/获取 View Controller 的类。我也愿意接受实现这一点的其他选择。

最佳答案

编辑(评论后):

这完全符合 MVC 标准,IMO。您的 FavoritesViewController 负责告诉您正在处理哪个对象并调用正确的特定 Controller (CatDetail 或 DogDetail View Controller )。它仍然嵌入了有关您的应用程序和模型的业务逻辑的知识,并且 View 与其正确分离。你看,最后,在 FavoritesViewControllerDogsViewController/CatsViewController 之间并没有太大区别;唯一的区别是 FavoritesViewController 知道两种类型的数据,而不是只知道一种。

旧答案:

我不确定我是否完全理解你的场景,但据我了解,我会说你可能会打破封装原则;然后,它归结为你是如何做的,即,如果你使用工厂,或者你如何根据模型信息实例化你的特定 Controller 。

至于MVC,我认为你并没有具体破坏它。只要“ Controller ”负责创建您的特定 Controller 类,您就在其边界内玩耍。

好吧,请对此持保留态度,因为我对您的工作只有非常片面的了解。无论如何,希望对您有所帮助。

关于iOS MVC : get view controller class from model?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9868833/

相关文章:

javascript - Spring MVC 在没有表单的情况下将模型数据从 View 发送到 Controller

ios - 在两个 View 之间传递数据(在同一个 ViewController 中)

ruby-on-rails - 批量分配真的是 Homakov 的 GitHub 黑客攻击的罪魁祸首吗?

iphone - 如何加密 iPhone 上的 CoreData 内容

iphone - 如何确定 NSManagedObject 是否永久?

ios - 如何在 iOS 13.3 上使用 xib 显示 UITableViewCell?

iphone - 如何替换当前打开的 FMDB 数据库并保留当前队列?

ios - 将 Xcode 11 testresult .xcresult 转换为 JUnit?

ios - Swift 4 中的 UICollectionViewController 未调用 cellForItemAt 函数

ios - 学习最新核心数据的最佳书籍是什么