示例代码说明了iOS中的MVC架构

时间:2011-06-10 17:21:46

标签: iphone objective-c ios model-view-controller design-patterns

我正试图搞清楚MVC架构。假设我有一个人员列表,每个人都有一些属性,如姓名,地址和照片。假设 我想在表格视图中显示这些细节。单元格标题将是名称,描述将是地址,而左侧的图像将是该人的照片。

我可以采取的一种方法是在我的viewDidLoad中将plist加载到一个字典数组中:然后显示它们。

但是,我想通过创建'Person'类来采用面向对象的方法。在这种情况下,我该如何做同样的事情?我相信我可以从创建一个具有三个属性的“Person”类开始:Name,Address,Photograph。接下来是什么?我需要这个'人'类的许多实例吗?我如何使用plist中相应的Person条目“加载”每个实例?我应该创建另一个执行此“加载”的类吗?人们用Singleton类来实现他的吗?

有人可以分享一些示例示例代码来说明这一点吗?或者可以引导我到谈论这个的博客/资源?

2 个答案:

答案 0 :(得分:4)

嗯,我想你有点过分思考了。我只想创建一个可以处理我的人的类,在本例中是你的'Person'类。

我只想使用Core Data存储每个人。然后,当它显示它们的时候,我只是创建一个获取请求并将所有人管理的对象存储到NSMutableArray(它只处理对象数组)。然后,您只需使用索引值即可在tableView中显示数组中的众多人员。

总之,我会:

1. For every person, create instance of Person.
2. Verify if person exists in my Core Data Person Entity.
3. If not, then insert into Core Data (the object will become an
NSManagedObject).
4. For displaying, simply do a fetch request to pull all persons in your
entity. Here I prefer to store the
results into an NSMutableArray, but
that is completely up to you. Make
sure you release your fetch request
after the results are store in the
array.
5. Reference them to your table view using the index value for each
person NSManagedObject in the array.

对于不涉及简单存储的内容:

1. Create instance of Person for every entry.
2. Add Person object to array.
3. Reference each Person to table view using index value.

最后,您采取的方法将取决于您对信息的处理方式。

至于读取plist,我会选择读取一个XML,你需要的只是一个XML Parser类(解析器有几个选项)。由于我除了解析XML之外什么都不做,我使用的是NSXMLParser,但是这个选择也取决于你。只需创建一个NSXMLParser类(确保解析器找到给定元素时的不同操作在该解析器中发挥作用)。所以是的,您需要添加NSXMLParser来处理每个元素。它听起来比听起来容易。

此外,通过存储在Core Data中,您始终可以在不使用Singleton的情况下获取信息。

答案 1 :(得分:1)

我相信您并不是在寻找上述问题的设计解决方案。如果是这样的话,@ Salcedo的版本看起来很好。

如果您正在寻找MVC和建模的一般指导方针,Martin Fowler的网站提供了一些最佳(敏捷)设计/建模指南。
http://www.martinfowler.com/eaaDev/uiArchs.html(关于MVC)和
http://martinfowler.com/design.html(许多有趣的设计相关帖子)。

快乐阅读。