在使用 IB、NSObjectController 子类和绑定时,我一直在努力理解插入控制器逻辑的最佳方式。
我需要在模型和视图之间插入控制器逻辑,我正在努力寻找一种优雅的方式来做到这一点。是的,您可以向文件所有者发送操作并在其中处理控制器逻辑,但是当某些核心数据模型可以扩展到五十个或更多具有深度关系结构的实体时,这开始安装大量的样板代码。
一个非常简单的例子是这样的;假设您有一个具有四个字符串属性 myTextWinter、myTextSpring、myTextSummer、myTextAutumn 的实体。您有一个通过 NSObjectController 连接到 IB 中的视图。Now, say the user can select which 'Season' they wish to view by choosing Spring, Summer, Autumn, Winter from a Menu somewhere - when that season is selected, I would like to display the appropriate season's text.
在这个简化的示例中,我可能会在 NSDocument 子类中获取对象,创建一个我在视图中绑定到的名为 mySeasonText 的属性,然后检查我的 NSUserDefaults 是否有适当的季节,并将请求路由到模型中的适当属性.
当我有五十个实体时,问题就出现了,其中一些实体的关系有两个、三个或更深,每个实体都有自己的一组特定于季节的文本属性,我希望在从季节菜单中进行选择时在这些属性之间进行切换。或者,如果我有一堆 nsarraycontroller 链接在一起以访问更深层次的对象。
迄今为止,我一直在做以下事情;在我的每个模型对象中添加一个名为“mySeasonText”的属性,然后从我的控制器设置中获取设置,并路由到适当的季节。I refresh these objects whenever a new item in the menu is selected.
虽然这有效并消除了绝对大量的样板代码,但我的控制器逻辑现在在我的模型中。
一定会有更好的办法!有人可以指出我正确的方向吗?