2014-04-09 155 views
0

我在這裏掙扎,我希望你能幫上忙。我想創建一個所有我的webservice調用所在的類。我想要所有的調用異步。我有的問題是如果返回數據,如果它是異步的。我會假設我需要使用委託,但我不知道如何編寫它。iOS異步http呼叫和代表

感謝先進!

+0

您可以使用AFNetworking。然後創建一個將發佈/獲取所有請求的單例。 –

+1

你的問題與如何編寫這個特定的委託協議,或者如何編寫一般的委託協議有關嗎? – rdelmar

+0

查看Apple的文檔。你會發現一些示例代碼這樣做。 – gnasher729

回答

1

如果您要編寫一個請求所有HTTP調用的類,則塊是要走的路。如果您選擇使用代表,您的代碼將分散。您可以如下實施:

@interface WebServiceManager : NSObject 

- (void) dataForUser:(NSString*) userId withCompletionHandler:(void(^)(id userData)) onComplete; 
... 
@end 

@implementation WebServiceManager 

- (void) dataForUser:(NSString*) userId withCompletionHandler:(void(^)(id userData)) onComplete { 
    // Use NSURLConnection sendAsynchronousRequest OR AFHTTP Class 
    // to make HTTP Calls 
    // assume id data as data retreived from service. 
    onComplete(data); // Return Data 
} 
@end 

從你的模型類可以實例WebServiceManager類的一個對象,如下使用:

// Model Class 

- (void) getUserInfo { 
    WebServiceManager *webSvc = [[WebServiceManager alloc] init]; 
    [webSvc dataForUser:@"foo" withCompletionHandler:^(id response) { 
     // response is the data returned from HTTP async call. 
     // do something with response now. 
    }]; 
} 
// With Blocks your code for requesting data and processing data will be one place now. 
+0

這是完美的!和一個很好的介紹塊。我喜歡!謝謝! – DJH