2010-07-27 49 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