2015-05-08 39 views
0

我使用下面的代碼通過PHP文件從Url檢索數據,tableview控制器將啓動活動指標。我試圖做的是停止指標只要沒有數據已經​​加載到tableview。停止活動指標,而Xcode中沒有行

她是代碼;

NSString *urlString = [NSString stringWithFormat:@"http:/MyWebSite/ChoseMyLike.php?userName=%@", myString]; 

    NSURL *url = [NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 

    NSURLSessionTask *task = [[NSURLSession sharedSession] dataTaskWithURL:url completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { 
     if (!data) { 
      NSLog(@"connection error: %@", error); 

      return; 
     } 

     NSError *parseError; 
     NSArray *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&parseError]; 
     if (!json) { 
      NSLog(@"JSON Parsing error: %@", parseError); 
      NSLog(@"data = %@", [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]); 

      return; 
     } 

     NSMutableArray *results = [[NSMutableArray alloc]init]; 

     for (int i = 0; i < json.count; i++) { 
      NSString *cQasidaName = json[i][@"qasidaName"]; 
      NSString *cQasidaShaerName = json[i][@"qasidaShaerName"]; 
      NSString *cQasidaBody = json[i][@"qasidaBody"]; 
      NSString *cQasidaDate = json[i][@"myDate"]; 
      NSString *cQasidaTime = json[i][@"myTime"]; 
      NSString *cQasidaRate = json[i][@"myRate"]; 
      NSString *cQasidaId = json[i][@"qasidaId"]; 
      NSString *cQasidaUserName = json[i][@"userName"]; 
      NSString *cTheUserId = json[i][@"theUserId"]; 
      NSString *cTheUserNameArabic = json[i][@"userNameArabic"]; 

      [results addObject:[[ListOfObjects alloc] initWithQasidaName: (NSString *) cQasidaName andQasidaShaerName: (NSString *) cQasidaShaerName andQasidaBody: (NSString *) cQasidaBody andQasidaDate: (NSString *) cQasidaDate andQasidaTime: (NSString *) cQasidaTime andQasidaRate: (NSString *)cQasidaRate andQasidaId:cQasidaId andQasidaUserName:cQasidaUserName andTheUserId:cTheUserId andTheUserNameArabic:cTheUserNameArabic]]; 



     } 

     dispatch_async(dispatch_get_main_queue(), ^{ 
      self.listArray = results; 


      [self.tableView reloadData]; 

      [spinner stopAnimating]; 




     }); 
          }]; 


    [task resume]; 



} 

目前指標沒有停止。我需要做什麼? 感謝

+0

」只要沒有數據加載到tableview。「這並不清楚。 spinner初始化的地方在哪裏?它可能是'無'? – trojanfoe

+0

對不起,我的意思是如果沒有數據,Url請求不會返回任何內容。在那個階段,我想停止指標 –

+0

換句話說,表格是空的 –

回答

0

直接讓[spinner stopAnimating];所有返回路徑:

if (!data) { 
    NSLog(@"connection error: %@", error); 
    [spinner stopAnimating]; 
    return; 
} 

if (!json) { 
    NSLog(@"JSON Parsing error: %@", parseError); 
    NSLog(@"data = %@", [[NSString alloc] initWithData:data 
               encoding:NSUTF8StringEncoding]); 
    [spinner stopAnimating];  
    return; 
} 

注:它更容易有一個return語句,然後你可以隨時撥打[spinner stopAnimating];末的方法...考慮重組你的代碼。 「

+0

我確實通過添加[spinner stopAnimating]來改變我的代碼,但仍然有同樣的問題 –

+0

@ Ahmed.S.Alkaabi我將重構您的代碼。你想'如果(加載){如果(gotdata){process_data(); }} [spinner stopAnimating];返回;'。 – trojanfoe