由于未捕获的异常终止应用程序' NSInvalidArgumentException',原因:' - [__ NSArrayM isEqualToString:]:无法识别的选择器

时间:2017-11-17 07:52:02

标签: ios objective-c nsarray

我有一个二维数组的字符串,我试图将数组传递到一个表但是我得到错误

由于未捕获的异常终止应用' NSInvalidArgumentException',原因:' - [__ NSArrayM isEqualToString:]:无法识别的选择器发送到实例0x17045d8b0'

我有3个表,其中两个相互依赖以填充表格。因此,假设用户选择表A中的项目,则应根据表A的输入填充表B.表A包含类别,表B包含所选类别的子类别。

对于类别i,我有一维数组,对于subCategories,我有一个2D数组。

表B 2D阵列图: enter image description here

我的问题是如何访问该2D数组,以便当用户单击类别表中的类别时,我可以将该indexPath.row值传递给下一个表,该表是具有2D数组的子类别表。所以我得到了相关的子类别。

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


if (tableView == _queryTypeTableView) {

    _contentArray = [_queryTypeCv mutableCopy];
}
else if (tableView == _categoriesTableView){

    _contentArray = [_categoryCv mutableCopy];
}
else if (tableView == _subCategoriesTableView){

        _contentArray = [_subcategoryCv mutableCopy];

}

return [self.contentArray count];

}
  

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

static NSString *simpleTableIdentifier = @"SimpleTableItem";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}

if ([tableView isEqual:_queryTypeTableView]) {

    cell.textLabel.text = [self.queryTypeCv objectAtIndex:indexPath.row] ;
}
else if ([tableView isEqual:_categoriesTableView]){

    cell.textLabel.text = [self.categoryCv objectAtIndex:indexPath.row] ;
    _selectedCategoryIndex = (int)indexPath.row;
}

else if ([tableView isEqual:_subCategoriesTableView]){

        cell.textLabel.text = [[self.subcategoryCv objectAtIndex:_selectedSubCategoryIndex] objectAtIndex:indexPath.row] ;
}
return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

if ([tableView isEqual:_queryTypeTableView]) {

    UITableViewCell *cell = [_queryTypeTableView cellForRowAtIndexPath:indexPath];
    [_queryTypeButton setTitle:cell.textLabel.text forState:UIControlStateNormal];
    _queryTypeTableView.hidden = YES;
    _categoriesButton.enabled = YES;
    _categoriesButton.backgroundColor = [UIColor darkGrayColor];
    NSLog(@"You selected 1------> %ld!",(long)indexPath.row);

}
else if ([tableView isEqual:_categoriesTableView]){

    UITableViewCell *cell = [_categoriesTableView cellForRowAtIndexPath:indexPath];
    [_categoriesButton setTitle:cell.textLabel.text forState:UIControlStateNormal];
    _categoriesTableView.hidden = YES;
    _subCategoriesButton.enabled = YES;
    _subCategoriesButton.backgroundColor = [UIColor darkGrayColor];
    NSLog(@"You selected 2------> %ld!",(long)indexPath.row);
    _categorySelectedFlag = YES;


}

else if ([tableView isEqual:_subCategoriesTableView]){

    UITableViewCell *cell = [_subCategoriesTableView cellForRowAtIndexPath:indexPath];
    [_subCategoriesButton setTitle:cell.textLabel.text forState:UIControlStateNormal];
    _subCategoriesTableView.hidden = YES;
    _outcomeButton.enabled = YES;
    _outcomeButton.backgroundColor = [UIColor darkGrayColor];
    NSLog(@"You selected 3------> %ld!",(long)indexPath.row);

}
}

这行代码抛出了错误:

cell.textLabel.text = [[self.subcategoryCv objectAtIndex:_selectedSubCategoryIndex] objectAtIndex:indexPath.row] ;

0 个答案:

没有答案