我有一些由自定义NSManagedObject类管理的实体。它们在不同的视图控制器中列出。受管对象子类具有通用的抽象超类,该超类具有通用的属性(假设其title
为NSString,而favorite
为BOOL)。我有用于收藏夹的列表的视图控制器,好..所有具有favorite
属性为true的实体。由于收藏夹具有不同的类-从那些托管对象的抽象超类的适当子类派生(或获取)视图控制器类是否正常?我在这里打破MVC吗?
更新资料
Sergio的一些说明:假设我有抽象超类Animal
和子类(如Cat
,Dog
)。这些实例代表单个动物(例如带有名称的动物)。然后我有CatsViewController和DogsViewController。它们列出了适当的Animal
子类的实例。我也有CatDetailsViewController和DogDetailsViewController,它们代表托管对象的单个实例。然后,我有一个FavoritesViewController,它同时列出了这两个表中的猫和狗。轻按一行后,我想将用户带到适当的CatDetail或DogDetail视图控制器。问题出在这里-我可以从托管对象的实例中派生/获取视图控制器的类。我也愿意意识到实现这一点的其他选择。
最佳答案
编辑(评论后):
这完全符合MVC,IMO。您的FavoritesViewController
负责告诉您要处理的对象,并调用正确的特定控制器(CatDetail或DogDetail视图控制器)。它仍然嵌入有关您的应用程序和模型的业务逻辑的知识,并且视图与之正确分离。最终,您看到FavoritesViewController
和DogsViewController
/ CatsViewController
之间没有太大区别;唯一的区别是FavoritesViewController
知道两种类型的数据,而不是一种。
旧答案:
我不确定我是否完全了解您的情况,但是据我了解,我想说的是您可能在破坏封装原理。然后,取决于您的操作方式,即是否使用工厂,或如何基于模型信息实例化特定的控制器。
至于MVC,我认为您并没有特别提到它。只要“控制器”负责创建您的特定控制器类,您就可以在其边界内玩耍。
好吧,再加一点盐,因为我对您正在做的事情只有很部分的了解。无论如何,希望能有所帮助。