我正在爲iPhone的應用程序工作,我從PHP服務器加載JSON,解析它與庫,並創建一個對象與此數據。我的代碼工作正常,但我這樣做的方式似乎錯了我:正確的方式來設計數據加載和對象創建
viewController向用戶顯示加載視圖。同時,ViewController會發出請求並接收數據。 的VC解析響應,並得到一本字典 字典被髮送到「創一流」誰返回從字典
創建的對象我這樣做操作兩次,但我認爲這是一個不好的設計:
視圖控制器應該執行http請求嗎?不要成爲「objectLoader」?創建類的主要方法,使一大束的if/else意大利麪,如:
for(NSString key in dictionary){
if(key isEqualToString "a key"){
perform action
}
else if(key isEqualToString "an other key"){
perform action
}
....
}
任何想法來解決呢?我在想使鍵/選擇器的字典來解決它,這樣做:
for(NSString key in dictionary){
[self performSelector:[selectors getObjectForKey:key]]
}
但我不知道我是否可以在字典引用一個選擇......
最後其他的選擇,我發送解析的字典與對象類的方法,如:[ClassName createObjectWithDictionary:parsedDictionary]
。這是一個很好的方法來做到這一點?
我知道這個問題有點曖昧,但我應該申請什麼設計模式,我有點失落,誰負責什麼,在這個故事
感謝您的答案!我很抱歉,因爲我不知道我是否理解你的方法。 UIViewController應該創建控制器?我應該爲每個請求類型擁有一個控制器嗎?所以控制器應該是UIViewController和從我的服務器加載對象的模型之間的中間人?控制器應該處理收到的數據?爲了解決我的問題,我正在努力學習設計我的軟件的最佳方式。 – Jpellat
「UIViewController應該創建控制器?」 - 不是必需的,它可以由應用程序委託創建並從viewController進行設置。 「我應該爲每個請求類型都有一個控制器」 - 不,我的建議是讓控制器負責確切的角色。一個 - 用於加載公共數據,一個用於加載資源等。 「所以控制器應該是UIViewController和我的服務器上的對象加載模型之間的中間人?」 - 是的,這樣的。 「控制器應該處理收到的數據?」 - 這取決於,如果你有數據請求控制器,你可以將 –
數據處理移動到相應的viewController,但是如果你有控制器做特定的數據請求,它可以解析並且通知viewController關於新數據。 –