我有一堆继承自NSObject(Result)的模型对象。我有一堆从UIView(ResultView)继承的视图对象。它们以1:1的关系存在(一个视图的一个模型)。在我的控制器中,我有一个两个数组:一个用于Result对象,另一个用于ResultView对象。控制器显示许多这些结果视图,可以添加/删除/重新排序。试图保持2个阵列同步(结果和结果视图)是不成功的。我该如何处理这个问题?
我正在考虑使用模型对象初始化视图对象(例如:在我的ResultView类中使用initWithResult:然后在ResultView中保留指向Result对象的指针)。然后,我可以执行类似ResultView.result的操作来访问模型数据。有更好的解决方案吗?这会破坏MVC,不是吗?
答案 0 :(得分:1)
除非您尝试将这些模型对象保存在数据库或类似的东西中,否则我会在模型对象上放置一个视图属性。如果您不必出于任何原因创建视图,那么只需将其清零以节省内存。
它会破坏MVC吗?我猜。但是,如果模型对象始终具有与之关联的视图,则它将开始进入模糊线区域。没有编程上帝会让你破坏标准一点点地狱。
在查看代码时,让其他程序员了解干净,最佳和最简单的内容。
答案 1 :(得分:0)
好的,如果我正确理解了您的问题,那么在动态创建/删除视图时,模型对象是持久的。您隐式依赖于两个数组的索引来实现两个部分的映射。一种简单的方法是在视图类中添加“模型对象ID”。然后,您可以轻松地在视图中引用正确的模型对象。