2015-04-03 60 views
0

在我的項目中有超過6個具有NSURLConnection的類,我覺得必須創建一個NSURLConnection類並將此類重用到所有類中但是我不知道如何做到這一點可以幫助我這個,給我一些例子,如果你有感謝所有提前NSURLConnection在IOS中創建一個自定義類

.h 
     #import <Foundation/Foundation.h> 

     @interface Connections : NSObject<NSURLConnectionDataDelegate> 
     { 
      NSArray * array; 
      NSMutableData * data; 
     } 

.m 
    #import "Connections.h" 

    @implementation Connections 


    -(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 
    { 
     data = [[NSMutableData alloc]init]; 
    } 
    -(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)theData 
    { 
     [data appendData:theData]; 
    } 
    -(void)connectionDidFinishLoading:(NSURLConnection *)connection 
    { 
     array = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; 
    } 
    -(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error 
    { 
     NSLog(@"Failed"); 
    } 
    @end 

回答

0

你應該繼承「NSObject的」類,寫你的NSURLConnections和它的響應處理代碼。

使用自定義委託來傳遞您將獲得的數據作爲對各自viewControllers的響應。

OR

如果您希望使用第三方的方式: -

FOLLOW THIS LINK

此庫服務器的通信和更易於接受響應。

加法: - 當你創建一個NSObject類,你應該先寫一個方法,這樣就可以通過參數來啓動連接:像下面

+(void)makeWebRequestWithParameters:(NSDictionary *)parameters forService:(NSString *)service { 

    requestParameters = [NSMutableString new]; 

    for (NSString * keys in parameters.allKeys) { 
     [requestParameters appendString:[NSString stringWithFormat:@"%@=%@&",keys,[parameters objectForKey:keys]]]; 
    } 

    NSString * myString = [self removeand:requestParameters]; 

    NSLog(@"REQUEST PARAMETERS: %@", requestParameters); 

    NSData *postData = [myString dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; 
    NSString *postLength = [NSString stringWithFormat:@"%lu",(unsigned long)[postData length]]; 
    request = [[[NSMutableURLRequest alloc] init] autorelease]; 

    [request setURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@/%@",BASE_URL,service]]]; 

    [request setHTTPMethod:@"POST"]; 
    [request setValue:postLength forHTTPHeaderField:@"Content-Length"]; 
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
    [request setHTTPBody:postData]; 

    NSURLConnection *conn = [[NSURLConnection alloc]initWithRequest:request delegate:self]; 
    [conn start]; 
} 

然後使用「NSURLConnection的」委託來處理你,你會得到響應數據

在任何您的視圖控制器中調用上面的方法,如:

[connection makeWebRequestWithParameters:parameters forService:optional]; 

不要忘記在NSObject類的「.h」文件中聲明「makeWebRequest ...」方法

+0

我會嘗試它現在這個第三方還提供了json解析? – Thanks 2015-04-03 12:16:09

+0

它不會爲你解析json,但你必須自己寫解析。 – Shailesh 2015-04-03 12:18:53

+0

好吧我已經創建了NSObject類並編寫了nsurlconnection委託方法,我不知道如何使用這個類可以幫助我創建nsobject類並編寫了nsurlconnection的委託方法並嵌套了我如何使用這種方法在我的類 – Thanks 2015-04-03 12:21:40

相關問題