寻求iPhone应用程序结构的建议

时间:2010-07-27 20:59:11

标签: iphone objective-c xcode json interface-builder

我的任务是创建一个iPhone应用程序,它将从Twitter获取一系列REST API JSON提要。

我对iPhone开发有点新手,但我之前创建了一些应用程序,但没有一个需要使用API​​数据。

因此,假设我们在Interface Builder中有3个视图由tabcontroller控制:

  • 饲料
  • 关注
  • 之后

这些视图中的每一个都需要在tableview中显示JSON提要。应在显示视图时加载数据。

还会有一个搜索框向Twitter的搜索API JSON提要请求,并在另一个视图中的UITableView中返回结果。

我在我的项目中安装并导入了json-interface库。我也成功地收到了NSString中的Feed。

但这是我的问题:

  • 我应该如何准备我的应用程序以向多个JSON提要发出请求,并在不同视图的不同表中显示相应的数据?我看到的所有教程只显示一个JSON请求被格式化为一个视图上的一个表。例如:http://iosdevelopertips.com/cocoa/json-framework-for-iphone-part-2.html

  • Interface Builder如何适应这种情况?如何使用我在Interface Builder中插入视图的表格?

2 个答案:

答案 0 :(得分:1)

我在下面建议的内容可能会或可能不会比您的情况需要的多一点,但总是将数据和网络与您的用户界面类别分开。

您应该创建一个模型层,换句话说,一组类只负责从服务器获取数据并使其可供应用程序的其余部分访问。设计模型层的方法类似于设计数据库:考虑数据域以及最方便的映射方式。 (在这种情况下,您的模型类将严格遵循Twitter数据模型。)不要过多考虑界面的外观也很重要。模型层应尽可能独立于UI,因此更改UI不需要更改模型类。

创建一个基础模型对象,然后可以将其子类化以表示特定类型的数据。此基本模型应该知道如何调用服务器,并且它应该具有显示数据是否正在加载,完成或者是否已取消加载的状态。诸如视图和控制器之类的UI类可以观察到这种状态,并在它发生变化时自行更新。

例如,每个表视图单元格可能具有对模型对象的引用,并且当模型的状态更改为“已加载”时,单元格将从模型中获取一些字符串和其他数据并更新其外观。

注意不要同时进行太多网络请求。而是使用队列。你绝对应该使用梦幻般的ASIHTTPRequest库进行联网和排队。要按照概述使用模型图层,您还需要了解Key-Value Observing

关于你的第二个问题,这是非常笼统的。您可以通过使控制器成为dataSourcedelegate并实施UITableViewDelegateUITableViewDataSource协议来使用这些表。

答案 1 :(得分:0)

我应该如何准备我的应用程序以向多个JSON Feed发出请求,并在不同视图的不同表中显示相应的数据? ...

每个ViewController都会像教程一样处理自己的JSON请求。

Interface Builder如何适应这种情况?如何使用我在Interface Builder中插入视图的表格?

您在ViewControllers中为您的tableviews创建一个IBOutlet。例如:

// FeedViewController.h
@interface FeedViewController : UIViewControllerUIViewController <UITableViewDelegate, UITableViewDataSource, FeedControllerDelegate> {
IBOutlet UITableView _feedTableView
}

在Interface Builder中,将TableView链接到IBOutlet变量。您将使用此变量与控制器中的TableView进行交互。

非常感谢任何教程链接或相关项目源代码!

当我开始一个类似的项目时,我没有找到很多很好的教程。对我来说,Tekpub是了解如何在iPhone应用程序中显示操作数据的最佳资源。