2015-12-30 65 views
0

我從Web服務獲取數據。然後我想將這些數據放入一個可變數組中並返回該數組。我只是爲了檢查數組是否爲空。如何在成功塊中返回一個數組ios

我在我的頭文件

typedef void(^FailureBlock)(NSError *error); 
typedef void(^SuccessBlock) (NSArray *responseArray); 

這是我實現文件

- (void)setupConnectionWithsuccess:(SuccessBlock)success failure:(FailureBlock)failure 
{ 
    airportArray = nil; 
    NSString *Code = [NSString stringWithFormat:@"something"]; 
    NSString *authCode = [NSString stringWithFormat:@"something"]; 
    NSString *baseurl = [NSString stringWithFormat:@"someurl%@%@",authCode,Code]; 
// NSString *mainurlString = [NSString stringWithFormat:@""]; 
// NSURL *mainurl = [NSURL URLWithString:mainurlString]; 

    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; 
    [manager GET:baseurl parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { 

     NSArray *mainArray = (NSArray *)responseObject; 

     airportArray = [[NSMutableArray alloc] init]; 
     for (NSDictionary *all in mainArray) { 
      airports = [all objectForKey:@"port"]; 

      [airportArray addObject:airports]; 
      NSLog(@"%@", airports); 
     } 

     if(_successBlock){ 
      _successBlock(airportArray); 
     } 

     //NSLog(@"%@", responseObject); 
    } 
    failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { 

     if (_failureBlock) { 
      _failureBlock(error); 
     } 
     UIAlertController *mainAlert = [UIAlertController alertControllerWithTitle:@"Something Wrong!" message:[error localizedDescription] preferredStyle:UIAlertControllerStyleAlert]; 
     [self presentViewController:mainAlert animated:YES completion:nil]; 

    }]; 




} 

- (void)printap 
{ NSLog(@"ffffuuu"); 
    [self setupConnectionWithsuccess:^(NSArray *responseArray) { 

     NSLog(@"Checking ::::%@", responseArray); 

    } failure:^(NSError *error) { 

     UIAlertController *failureAlert = [UIAlertController alertControllerWithTitle:@"Errrrr..." message:@"Errrrr...." preferredStyle:UIAlertControllerStyleAlert]; 
     [self presentViewController:failureAlert animated:YES completion:nil]; 
    }]; 
    NSLog(@"fkjfkdjkfjdkfjdk"); 
} 

**我想要檢索的數據後,使用此airportArray定義這個(要返回數組)。我怎麼能做到這一點

+2

您對發佈的代碼有什麼問題?在printapp'ffffuuu'和'fkjfkdjkfjdkfjdk'內打印 – rmaddy

+0

。但不會成功阻止或失敗block.is有什麼問題。實際上我想要的是在數據添加到它之後返回airportArray –

+0

使用調試器並查看'setupConnectionWithSuccess:failure:'方法內發生了什麼。 – rmaddy

回答

0

這些行:

if(_successBlock){ 
     _successBlock(airportArray); 
    } 

應該是:

if(success){ 
     success(airportArray); 
    } 

我不知道是什麼_successBlock是,但要使用傳入setupConnectionWithsuccess:failure:方法的參數。

通過將_failureBlock替換爲failure,對故障塊做出類似更改。

+0

很好,工作良好。非常感謝...... –

+0

但我該如何返回該數組。 –

+0

通過將數組傳遞給完成塊來返回數組。 – rmaddy