2015-11-04 272 views
1

第一seprecated它說use [NSURLSession sharedsession] dataTaskwithRequest:request completionHandler:]警告有關sendsynchronousRequest:returningResponse:錯誤:已被棄用:在IOS 9-

所以在這裏我的代碼:

NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; 

我上面的代碼改成這樣:

NSData *returnData = [[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:nil]; 

我得到了2警告:

  1. 空傳遞給requirs一個非空參數

  2. 不完整的指針類型初始化「NSData的」類型「NSURLSession」

的表達被叫幫我做out.Please我解釋與有助於理解的代碼。我是新來的iOS

我的實際代碼:

-(void)getdata { 

    NSString *userName = @「[email protected]」; 
    NSString *password = @「passr」; 
    NSData *plainData = [password dataUsingEncoding:NSUTF8StringEncoding]; 
    NSString *base64String = [plainData base64EncodedStringWithOptions:0]; 
    base64String=[self sha256HashFor: base64String]; 

    NSString *urlString = @"https://api.eaxmpleurl/files"; 

    NSMutableURLRequest *request= [[NSMutableURLRequest alloc] init]; 
    [request setURL:[NSURL URLWithString:urlString]]; 
    [request setHTTPMethod:@"GET"]; 



    NSString *authStr = [NSString stringWithFormat:@"%@:%@", userName, base64String]; 
    NSData *authData = [authStr dataUsingEncoding:NSUTF8StringEncoding]; 


    NSString *authValue = [NSString stringWithFormat:@"Basic %@", [authData base64EncodedStringWithOptions:0]]; 

     [request setValue:authValue forHTTPHeaderField:@"Authorization"]; 










    NSURLSessionDataTask *dataTask = [[NSURLSession sharedSession] 
             dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) 
    { 
     // Use the data here 







     NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 


     NSError * error1; 

     self->arrayPDFName = [[NSMutableArray alloc]init]; 
     NSDictionary *jsonResults = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil]; 


     NSDictionary *dictOriginal = jsonResults[@"dark」]; 
    [titleArray addObject:[NSString stringWithFormat:@" Dark(%@)」, dictOriginal[@"count"]]]; 


    NSDictionary *dictOriginal2 = jsonResults[@"opey」]; 
    [titleArray addObject:[NSString stringWithFormat:@" Opey(%@)」, dictOriginal2[@"count"]]]; 



    NSDictionary *dictOriginal3 = jsonResults[@"pef」]; 
    [titleArray addObject:[NSString stringWithFormat:@" Pef(%@)」, dictOriginal3[@"count"]]]; 


    NSDictionary *dictOriginal4 = jsonResults[@"sdf」]; 
    [titleArray addObject:[NSString stringWithFormat:@" Sdf(%@)」, dictOriginal4[@"count"]]]; 


     NSArray *arrayFiles = [NSArray arrayWithObjects: dictOriginal, dictOriginal2, dictOriginal3, dictOriginal4, nil]; 


     NSLog(@"str: %@", titleArray); 


     for (NSDictionary *dict in arrayFiles) { 
      NSMutableArray *arr = [NSMutableArray array]; 

      NSArray *a = dict[@"files"]; 
      for(int i=0; i < a.count; i ++) { 


       NSString *strName = [NSString stringWithFormat:@"%@",[[dict[@"files"] objectAtIndex:i] valueForKey:@"name"]]; 
       // NSLog(@"str: %@", strName); 
       [arr addObject:strName]; 
      } 
      [arrayPDFName addObject:arr]; 
     } 











       NSString *errorDesc; 
     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
     NSString *documentsDirectory1 = [paths objectAtIndex:0]; 
     NSString *plistPath = [documentsDirectory1 stringByAppendingPathComponent:@"SampleData.plist"]; 


     NSString *error2; 


     data = [ NSPropertyListSerialization dataWithPropertyList:jsonResults format:NSPropertyListXMLFormat_v1_0 options:0 error:&error]; 


     if(data) { 
      if ([data writeToFile:plistPath atomically:YES]) { 
       NSLog(@"Data successfully saved."); 
      }else { 
       NSLog(@"Did not managed to save NSData."); 
      } 
     } 
     else { 
      NSLog(@"%@",errorDesc); 
     } 



     NSDictionary *stringsDictionary = [NSDictionary dictionaryWithContentsOfFile:plistPath]; 




#pragma unused (stringsDictionary) 
#pragma unused (error1) 

#pragma unused (str) 








    }]; 

    // Starting the task 
    [dataTask resume]; 




} 
+0

您是否閱讀過'dataTaskWithRequest:completionHandler'的文檔:? – rmaddy

回答

2

您需要使用方法,如:

// Creating a data task 
NSURLSessionDataTask *dataTask = [[NSURLSession sharedSession] 
    dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) 
{ 
    // Use the data here 
}]; 

// Starting the task 
[dataTask resume]; 

請檢查dataTaskWithRequest:completionHandler:更詳細的信息。

+0

看到我的upadte,實際的數據是那個。我需要在那裏插入你的代碼。請在代碼中解釋explain.I新的bie – jj1

+0

@ jj1:這行'NSString * str = [[NSString alloc] initWithData:returnData encoding: NSUTF8StringEncoding];'應該在completionHandler裏面。檢查本教程:http://www.raywenderlich.com/67081/cookbook-using-nsurlsession –

+0

看到我的更新帖子 – jj1

相關問題