2010-07-27 126 views
1

我的任务是创建一个iPhone应用程序,该应用程序将使用来自Twitter的一系列REST API JSON源。寻求针对iPhone应用程序结构的建议

我对iPhone开发有点新,但是之前我已经创建了一些应用程序,尽管它们都不需要访问API数据。

所以我们可以说,我们有在Interface Builder 3次正在由tabcontroller控制:

  • 饲料
  • 关注

的这些观点各需要显示桌面视图中的JSON提要。数据应该在显示视图时加载。

还会有一个搜索框向Twitter的搜索API JSON供稿请求,并将结果返回到另一个视图中的UITableView。

我已经在我的项目中安装并导入了json接口库。我也成功地收到了NSString中的feed。

但这里是我的问题:

  • 我应该如何预习我的应用程序,使请求到多个JSON源和显示器上的不同看法不同表中的相应数据?我所看到的所有教程只显示一个JSON请求在一个视图中被格式化为一个表格。例如:http://iosdevelopertips.com/cocoa/json-framework-for-iphone-part-2.html

  • Interface Builder如何适应此?我如何使用我在Interface Builder中插入到视图中的表格?

回答

1

我在下面的建议可能会或可能不会超出您的情况要求,但它总是是一个好主意,可以将数据和网络与用户界面类分开。

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

创建一个基本模型对象,然后您可以继承该模型对象来表示特定类型的数据。这个基础模型应该知道如何调用服务器,并且它应该有一个状态显示数据是否正在加载,已完成,或者加载是否​​已被取消。 UI类(如视图和控制器)可以观察此状态并在更改时自行更新。例如,每个表格视图单元格可能都有对模型对象的引用,并且当模型的状态更改为“已加载”时,单元格将从模型中获取一些字符串和其他数据并更新其外观。

小心不要有太多的网络请求在同一时间去。相反,使用一个队列。你一定要使用神奇的ASIHTTPRequest库进行网络和排队。要按照概述使用模型图层,还需要了解。

至于你的第二个问题,这是非常普遍的。您通过使控制器为dataSourcedelegate并执行UITableViewDelegateUITableViewDataSource协议来使用这些表。

+0

感谢您深思熟虑的答案! – Dave 2010-07-28 04:00:21

0

我应该怎样预习我的应用程序,使请求到多个JSON源和显示器上的不同看法不同表中的相应数据? ...

每个ViewController都会照顾他们自己的JSON请求,比如教程。

Interface Builder如何适应此?我如何使用我在Interface Builder中插入到视图中的表格?

您在您的ViewControllers中为您的桌面视图创建IBOutlet。例如:

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

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

任何教程链接或相关的项目源代码将不胜感激!

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

+0

@dr:您的Tekpub链接看起来就像一个广告,您甚至没有指出它在这种情况下的帮助。也许你认为这是一个很好的资源,但这并不意味着你应该把这个小小的“横幅”放在每个答案上。我强烈建议你删除它。 – Felixyz 2010-07-27 21:58:59

+0

@Felixyz:我明白了你的观点并相应地调整了我的答案。我假设你会在答复中留下类似的评论,指导用户阅读他们可以购买的书籍? – 2010-07-27 22:19:22

+0

@dr:链接到一个好的资源或书籍并没​​有什么错,但是我个人从来没有在SO上看到任何与广告非常相似的东西(除了当然的广告......)在我看来,即使你的改版版本也无济于事。 “我寻找免费的教程” - 关于什么?这与这个问题有什么关系? (问题的一部分是问题本身有点含糊)。我确定这个资源非常好,你希望人们知道这个问题,但是SO应该是明确回答问题的明确答案。 – Felixyz 2010-07-27 22:36:34