2014-03-31 60 views
0

我已經爲請求創建了AFHTTPSessionManager的子類別。我有一個模型類來解析我的傳入JSON。iOS獲取請求的最佳做法

我應該在哪裏執行獲取請求?在我的模型中,ViewController還是應該使用包裝器來處理請求?

哪些是這種情況下的最佳做法?

+0

嘿卡洛斯,這裏有很多人願意幫忙,但請確保你已經展示了你已經嘗試過的,沒有發揮作用的,以及你的問題的背景。還要確保你已經閱讀[**如何問](http://stackoverflow.com/questions/how-to-ask),然後編輯你的問題,以更好地吸引人們的時間和精力。就目前來看,給你一個有限的答案是很難的,答案可能完全是基於觀點的。 – brandonscript

+0

我相信他的問題更多關於OOP原則,然後實際執行。 –

+0

你真的在使用RestKit嗎?應用程序的總體概況和它使用的數據/同步是什麼? – Wain

回答

2

在開始我的項目之前,我有過同樣的問題。我這樣做了:

Base Class使用AFNetworking完成所有取/放HTTP請求。 Web service class對基類一無所知 - 只是如何使用它,我在這個意義上做了泛型的方法。 Data class構建了我需要的url /參數。

通過這種方式,應用程序的其餘部分對網絡層一無所知。數據類知道如何將URL /參數放在一起並請求網絡呼叫。而已。 Web服務類知道如何根據提供給它的信息從數據類中進行該調用,並且基類知道如何提出請求並獲得響應。

然後,我將響應交給基礎XML/JSON類,該類開始分析從基礎Web服務類獲取的數據。一旦數據被解析後,它將被存儲到使用正確模型對象的數據類中。從那裏 - 應用程序只是要求數據類的數據。

使用這種方法,應用程序的頂層知道如何請求數據並將其恢復。它對這個過程的內部工作一無所知。這意味着,在未來,我應該決定更換一個不同的網絡庫,我只需要修改一個類而不是一堆代碼。

在堅果殼我構造這樣的:

  • 的ViewController類或某些其他類請求從Data class
  • Data Class數據然後構造所需請求
  • Webservice class URL和參數從Data Class獲取URL和參數並將其放入請求中,然後將其發送到基礎Web服務類
  • Base webservice class然後使用呼叫完整的網址。它處理響應,如果它成功,它將它放入一個NSData對象中 - 然後將其交給XML/JSON類
  • XML/JSOn類知道如何處理數據對象並開始解析。完成後,它會將其返回存儲爲自定義NSObject的Data class

一旦完成了原始調用的類通知完成了http請求和解析,它就會向數據提供`Data class'。

這種類別及其責任的分離,基於上述原因很有效。改變應用程序的一部分,不需要大量重寫許多類。在兩個,大部分。

我希望這能讓你走向正確的方向。

+0

很好的解釋。我正在開發一個類似的項目,但只是使用NSURLConnection。我在兩個抽象層次上做了類似的事情。任何時候我需要添加新的功能,我的連接類永遠不會改變,我只需要調整我的新方法的協議和特定的功能。強烈推薦Tander的方法。 – Inertiatic

+0

這就是整個想法。當你需要擴展時 - 你的網絡層保持不動。唯一需要改變的時機是改變庫或改用NSURLConnection。 :-) – Tander

+0

非常感謝Tander,這正是我一直在尋找的。現在我理解了理論方面,但我認爲我需要的不僅僅是一個例子,而是將其付諸實踐。我發現你將網絡與應用程序分離的方式非常有趣,並且是保持ViewControllers和MVC輕量級的好方法。 – CarlosGz