編輯:我的最終目標是完全解耦ASIHTTPRequest
和ModelListingViewController
,這樣我就可以做self.modelArray = [Model arrayOfModelWithDelegate:self]
,並且可能實現一些我自己的回調而不是ASI。此設計是訪問MVC時尚Web服務的好方法嗎?
我製作了幾款利用RESTful服務和ASIHTTPRequest的iPhone應用程序。我從未對它們的設計感到滿意,因爲我總是覺得解析,模型和視圖控制器類是緊密耦合的。我的下一個應用的更新,我想利用這個設計Web服務訪問:
ModelListingViewController --- self ---> Model +(NSArray*)arrayOfModelWithDelegate:MLVC
+(NSArray*)arrayOfModelWithDelegate ---> ModelWSController:WSController +(NSArray*)getAllModel
在WSController
:
@property (nonatomic, strong) ASIHTTPRequest *request;
...
- (void)performRequest {
//global request stuff, like authentication, headers, etc
[request startAsynchronous];
}
在ModelWSController
:
- (NSArray *)getAllModelWithDelegate:(id)delegate {
request.url = @"Appropriate URL"; //or could use a more sophisticated internal url routing system defined by model class name
request.delegate = delegate;
[ModelWSController performRequest];
}
,並在ModelListingViewController
:
self.arrayOfModel = [Model arrayOfModelWithDelegate:self];
這種設計看起來有點不妥,特別是在如何連接ModelWSController
和WSController
,但我不知道是什麼。具體而言,連續兩次下跌環比似乎是離奇的。
輸入是讚賞,我想知道你是如何設計使用MVC原則訪問RESTful Web服務。另外,請讓我知道如果塊是一個更好的方式來處理這個問題。
讓我們試着讓這個問題得到解答。我不能完全說出什麼是錯的。但從你的帖子我發現你的模型是本地的,但也是遠程(平靜的服務)。它是否正確? 你還談到了多個控制器? – 2012-08-26 23:02:18