繁体   English   中英

ios [__NSCFNumber length]:无法识别的选择器已发送到实例

[英]ios [__NSCFNumber length]: unrecognized selector sent to instance

我创建了一个自定义单元格,并在其上放置了按钮,按钮事件是这样的

   [cell.BtnRequest addTarget:self action:@selector(didTapButton:) forControlEvents:UIControlEventTouchUpInside];

和didtapbutton代码是这个

 - (void)didTapButton:(id)sender {

    WorkerDetailsVC *wvc=[self.storyboard instantiateViewControllerWithIdentifier:@"workerdetailsvc"];
    NSIndexPath *indepath = [self.tblorderdata indexPathForCell:sender];

    wvc.arrworkarrequest=[arrData objectAtIndex:indepath.row];

    NSLog(@" arr send :%@", wvc.arrworkarrequest);

    wvc.struserid = struserid;

   [self.navigationController pushViewController:wvc animated:YES];

    }

在下一页上,我得到了数组arrworkarrequest,在加载所有下一页后,它将显示如下错误

       2014-10-01 15:08:42.607 demo[2151:60b] -[__NSCFNumber length]: unrecognized selector sent to instance 0x911a860
       2014-10-01 15:08:42.613 dmeo[2151:60b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFNumber length]: unrecognized selector sent to instance 0x911a860'

您的问题是sender的类型是UIButton而不是UITableViewCell因此它被卡在[self.tblorderdata indexPathForCell:sender]因为该方法调用期望使用UITableViewCell的类型。

您需要找到按钮所在的单元格。您可以使用while循环来完成此操作(尽管这有点可怕)。 就像是:

id obj = sender;
while (![obj isKindOfClass:[UITableViewCell class]]) {
  obj = [sender superview];
}

[self.tblorderdata indexPathForCell:obj];

感觉好像是在滥用视图层次结构。

如果直接比较字符串的长度,则会发生这种情况

例如

NSString * myString = @“ 2”;

使用此语句将产生错误

如果(myString.length == 2)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM