2016-10-10 3 views
0

Я новичок в разработке iOS. Я делаю приложение, в котором я получаю ответ от JSON. Но когда я нажимаю кнопку для отображения следующего UITableView. У меня есть два вопроса для всех.Завершение приложения из-за неперехваченного исключения «NSRangeException», причина: '- [__ NSCFArray objectAtIndex:]: index (14) за пределами границ (14)'

1.) Перед этим будет отображаться пустое значение. Я должен прокрутить вниз для показа значений.

2.) После прокрутки вниз отладка ошибки в шоу "Нагрузочное приложение из-за неперехваченное исключение 'NSRangeException', причина:«- [__ NSCFArray objectAtIndex]: индекс (14) за пределы (14)"

Picture for shown scroll down to show datas

Извините за мой плохой английский. Я немного по-английски говорю по-английски.

Мы должны нажать кнопку для перехода к следующему UITableView.

- (IBAction)btnf10 
{ 
    NSMutableDictionary *content = [NSMutableDictionary dictionary]; 
    [content setValue:[[AppSetting sharedInstance] token] forKey:@"ewitoken"]; 
    //[content setValue:gloablOnWherehouse.selectedWhereHouse forKey:@"model_Name"]; 
    [[EWIConnector connector] requestEWIService:@"special_selected_f10" requestData:content delegate:self]; 
} 

И requestEWIServiceStart проверит строку.

- (void) requestEWIServiceStart:(EWIConnector *)connector{ 

     NSLog(@"start %@",connector.endpoint); 
    } 

    - (void) requestEWIServiceFinish:(EWIConnector *)connector responseData:(NSDictionary *)responseData{ 

     NSLog(@"finish %@",connector.serviceName); 
     NSLog(@"response %@",responseData); 

     if ([connector.serviceName isEqualToString:@"special_selected_f10"]) 
     { 
      NSLog(@"finish %@",connector.serviceName); 
      NSDictionary *content = responseData[@"content"]; 
      NSString *stAlertMes = [content objectForKey:@"alertMessage"]; 
      stAlertMes = [self getString:stAlertMes]; 
      NSLog(@"AlertMSG : %@", stAlertMes); 
      if (![stAlertMes isEqualToString:@""]) { 
       NSLog(@"ALERT MESSAGE : %@", stAlertMes); 
       gloablOnWherehouse.arTableDataSelected = [[NSArray alloc] init]; 
      } 
      else 
      { 
       NSLog(@"HAS DATA"); 
       gloablOnWherehouse.arTableDataSelected = [content objectForKey:@"DataList_SPI_DetailCollection"]; 
       [self.tableViewWhereHoseList reloadData]; 

       labelStatus.text = @"F11"; 

      } 
     } 
     else 
    { 
     NSLog(@"response %@",responseData); 
    } 
} 

UITableView 2 для данных ответа.

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 

    globlOnDisplayEffect = [GlobalVariable sharedInstance]; 
    globlOnDisplayEffect.arTableDataSelectedWhereHouse = [[NSArray alloc] init]; 
    [self.tableViewDetailList reloadData]; 

} 

- (NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { 
    return 1; 
} 

- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    return (globlOnDisplayEffect.arTableDataSelected)?[globlOnDisplayEffect.arTableDataSelected count]: 100; 
} 



- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    static NSString *simpleTableIdentifier = @"DisplayEffectQtyViewCell"; 
    DisplayEffectQtyViewCell *cell = [self.tableViewDetailList dequeueReusableCellWithIdentifier:simpleTableIdentifier forIndexPath:indexPath]; 
    if(cell == nil) 
    { 
     NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"DisplayEffectQtyViewCell" owner:self options:nil]; 
     cell = [nib objectAtIndex:0]; 

    } else { 
     if (globlOnDisplayEffect.arTableDataSelected) { 
      NSMutableArray *myMutbleArray = [[NSMutableArray alloc] init]; 
      [myMutbleArray addObject:globlOnDisplayEffect.arTableDataSelected]; 

      if (myMutbleArray) { 
       NSDictionary *myDic = [globlOnDisplayEffect.arTableDataSelected objectAtIndex:indexPath.row]; 
       NSDictionary *cont = [myDic objectForKey:@"DataList_SPI_DetailF10"]; 
       NSString *f10_cmpt = [self getString:[cont objectForKey:@"f10_cmpt"]]; 
       NSString *f10_dt = [self getString:[cont objectForKey:@"f10_dt"]]; 
       NSString *f10_item = [self getString:[cont objectForKey:@"f10_item"]]; 
       NSString *f10_lot = [self getString:[cont objectForKey:@"f10_lot"]]; 
       NSString *f10_model = [self getString:[cont objectForKey:@"f10_model"]]; 
       NSString *f10_of = [self getString:[cont objectForKey:@"f10_of"]]; 
       NSString *f10_semi = [self getString:[cont objectForKey:@"f10_semi"]]; 
       NSString *f10_tm = [self getString:[cont objectForKey:@"f10_tm"]]; 
       NSString *f10_uncmp = [self getString:[cont objectForKey:@"f10_uncmp"]]; 

       [cell setf10_cmpt:f10_cmpt setf10_dt:f10_dt setf10_item:f10_item setf10_lot:f10_lot setf10_model:f10_model setf10_of:f10_of setf10_semi:f10_semi setf10_tm:f10_tm setf10_uncmp:f10_uncmp]; 


      } 
     } 
    } 
    return cell; 

} 
+0

Добавить контрольную точку исключения, чтобы увидеть, где произошла ошибка. – RomOne

+0

Когда я - точка останова исключения. Это ошибка на "DisplayEffectQtyViewCell * cell = [self.tableViewDetailList dequeueReusableCellWithIdentifier: simpleTableIdentifier forIndexPath: indexPath];" После того, как я прокручу вниз от пустой ячейки до показанного значения на ячейке. –

ответ

0

Индекс Связанный массив, это обычная проблема. На 14-й позиции в вашем массиве нет объекта.

Перед загрузкой tableview, NSLog все данные, используя петлю в консоли, которую вы должны показать в ячейке.

else 
     { 
      NSLog(@"HAS DATA"); 
      gloablOnWherehouse.arTableDataSelected = [content objectForKey:@"DataList_SPI_DetailCollection"]; 

      // [self.tableViewWhereHoseList reloadData]; 

      labelStatus.text = @"F11"; 

     } 

А также проверьте, какой вид стола вы загружаете и получаете его. Я думаю, это должно быть

[globlOnDisplayEffect.arTableDataSelected count]>0 ?[globlOnDisplayEffect.arTableDataSelected count]:100. 

Объясните, почему вы покажете 100 ячейки, когда [globlOnDisplayEffect.arTableDataSelected счета] == 0. А для чего источник данных?

- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 

// NSLog what you return.... 
return (globlOnDisplayEffect.arTableDataSelected)?[globlOnDisplayEffect.arTableDataSelected count]: 100; 
} 

Проверьте также состояние ячейки таблицы. **

+0

О, извините за неправильное возвращаемое значение (100). Я напишу значение для возврата 1. Теперь вы можете решить мою проблему. Но у меня есть вопрос. Как решить первый вопрос. Потому что я должен только прокручивать вниз для показа данных. –

+0

Пожалуйста, исправьте его первым. Надежда вторая проблема будет решена автоматически. Ваша ячейка таблицы не получает данные для ячейки, в результате она сбой. Если вы получите решение, пожалуйста, поддержите и примите мой ответ. @ รัฐ พงศ์ ตุรงค์ เรือง –

+0

Я исправляю ваш комментарий. Это работа (это не ошибка массива). Но UITable не может отвечать на данные до прокрутки вниз. Пожалуйста, помогите мне. –

Смежные вопросы

 Смежные вопросы