我有一些由自定义NSManagedObject类管理的实体。它们在不同的视图控制器中列出。受管对象子类具有通用的抽象超类,该超类具有通用的属性(假设其title为NSString,而favorite为BOOL)。我有用于收藏夹的列表的视图控制器,好..所有具有favorite属性为true的实体。由于收藏夹具有不同的类-从那些托管对象的抽象超类的适当子类派生(或获取)视图控制器类是否正常?我在这里打破MVC吗?

更新资料

Sergio的一些说明:假设我有抽象超类Animal和子类(如CatDog)。这些实例代表单个动物(例如带有名称的动物)。然后我有CatsViewController和DogsViewController。它们列出了适当的Animal子类的实例。我也有CatDetailsViewController和DogDetailsViewController,它们代表托管对象的单个实例。然后,我有一个FavoritesViewController,它同时列出了这两个表中的猫和狗。轻按一行后,我想将用户带到适当的CatDetail或DogDetail视图控制器。问题出在这里-我可以从托管对象的实例中派生/获取视图控制器的类。我也愿意意识到实现这一点的其他选择。

最佳答案

编辑(评论后):

这完全符合MVC,IMO。您的FavoritesViewController负责告诉您要处理的对象,并调用正确的特定控制器(CatDetail或DogDetail视图控制器)。它仍然嵌入有关您的应用程序和模型的业务逻辑的知识,并且视图与之正确分离。最终,您看到FavoritesViewControllerDogsViewController / CatsViewController之间没有太大区别;唯一的区别是FavoritesViewController知道两种类型的数据,而不是一种。

旧答案:

我不确定我是否完全了解您的情况,但是据我了解,我想说的是您可能在破坏封装原理。然后,取决于您的操作方式,即是否使用工厂,或如何基于模型信息实例化特定的控制器。

至于MVC,我认为您并没有特别提到它。只要“控制器”负责创建您的特定控制器类,您就可以在其边界内玩耍。

好吧,再加一点盐,因为我对您正在做的事情只有很部分的了解。无论如何,希望能有所帮助。

09-25 17:57
查看更多