iOS/Cocoa数据控制器类 - 这是标准做法吗?

4
我已完成了前两个在线教程“您的第一个iOS应用程序”和“您的第二个iOS应用程序”。后者使用数据控制器类,如此处所示:这里
我现在正在阅读“iOS编程:Big Nerd Ranch Guide第三版”。它似乎没有提到数据控制器类,并且似乎正在将方法放入模型类本身中(即,放入MyClass.m而不是MyClassDataController.m)。
我相信所有事情最终都会变得清晰明了,但有人可以给我更广泛的参考框架吗?使用数据控制器类只是一种风格上的决定吗?我查看了其他几本书,它们也没有提到数据控制器。

只要它能工作,不要太担心结构 :) 如果你有漂亮的分离模型和展示的类,并且编写易读的代码,那么你就在正确的轨道上了。随着你变得越来越有经验,你最终会更容易地识别常见的模式和最佳实践。只需要一点时间和努力,没有其他什么 :) - user529758
由于我没有这本书,所以无法确定这本书是否会误导你或者只是采用了一些教学上的捷径,而这些捷径可能会在后面得到更详细的解释。但是我看到这本书有一个论坛(http://forums.bignerdranch.com/viewforum.php?f=211),其中作者之一Joe Conway似乎经常在那里发帖。因此,您可以尝试在那里提问。 - rob mayoff
我现在明白了。在“我的第二个iOS应用程序”中,数据控制器类只是一个类,用于保存指向所有MyClass对象(实际上是BirdWatching)的指针的数组对象(可变)。DataController这个术语听起来与ViewController非常相似,以至于我认为它比实际上更正式!谢谢大家。 - Nick
在后面的章节中,您将拥有数据控制器。 - jscs
@JoshCaswell 谢谢。我也有这样的猜想,但它们没有列在索引中,我大略翻了一下也没帮到我 :) - Nick
当然,由于某种原因,“数据控制器”这个术语在Cocoa中并不常见(尽管任何Cocoa开发人员都应该知道您的意思),所以它不会出现在索引中。当您在BNR书籍的Homepwner项目中到达那里时,PossessionStore将成为您的数据控制器。当您开始使用Core Data时,苹果公司有一些框架类是数据控制器,这可能是他们在教程中要让您了解的内容。 - jscs
2个回答

6
这是一个很好的问题!老实说,这两种方法都可以接受。Aaron Hillegrass(BNR书籍的合著者)是一位非常受尊敬的开发人员(甚至曾经培训过苹果工程师),显然你查看的苹果示例代码是“出自马嘴”,所以也是可靠的。
为什么苹果建议在他们的应用程序中使用单独的数据控制器?好吧,如果您的数据控制器符合相关协议,您可以将其直接插入到像UITableView这样的东西中。如果您正在编写具有不同视图的通用iPad / iPhone应用程序,则可能会非常有用。如果您正在使用storyboard,则这也非常有用。正如苹果所说:

数据控制器类允许应用程序中的其他对象访问对象[...],而无需知道数据模型的实现方式。

但是这可能过于复杂:有很多应用程序使用此模式,它们将该逻辑放入视图控制器本身。两种方法都有优缺点。换句话说:当您浏览苹果放在其开发人员网站上的示例代码时,您会发现有许多应用程序遵循苹果在“您的第二个iOS应用程序”教程中建议的模式!

谢谢你的帮助,以及你的保证,这不是一个荒谬的问题 :) 这个事实潜在地与 iPhone 和 iPad 视图的各种需求相吻合,这是有用的知识。 - Nick
另一个使用案例是通过最小化对数据管理代码的更改来支持OS X和iOS,尽管这并不是非常普遍的需求。 - lxt
你有什么特定的例子想要分享吗?请提供。 - Kunal Balani
“特定示例”是什么意思 - 关于在iOS和OS X之间共享代码? - lxt

1

把它看作是一种将数据(模型)与控制器和视图分离的中间方式。

一项很好的练习,一旦你深入学习了(在我看来非常出色的)BNR书籍,就是使用Core Data重写Birdwatching示例,而不是使用数据控制器。

这并不需要太多的工作 - (我已经做过了),如果你实际尝试将其用于像这样简单的事情,你会更好地理解Core Data。

祝你好运。


好建议。我很可能会这样做!谢谢你的帮助。 - Nick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接