繁体   English   中英

以NSException 4类型的未捕获异常终止

[英]terminating with uncaught exception of type NSException 4

我正在制作一个使用tableview的应用程序,并在每个表格单元格中使用复选框。 现在我被困在这个地方,当选中复选框时,我想获取该表格单元的值。 我在表格单元格中显示消息ID,我想要获取选中其复选框的该单元格的messages_Id 意味着如果我选择1个复选框,则其消息ID存储在NSString ;如果我选择2个复选框,则将这些复选框的2条消息存储在字符串中,这是如何实现的。 我已经制作了要在其中存储复选框消息ID的数组,但是我遇到了以下异常。 以下是我的复选框动作示例代码

-(IBAction)checkButton:(UIButton *)sender
{
    CGPoint buttonPosition = [sender convertPoint:CGPointZero toView:self.activitiesTableView_];
    NSIndexPath *indexPath = [self.activitiesTableView_ indexPathForRowAtPoint:buttonPosition];

    if ([self.checkimageArray containsObject:[self.lblArray objectAtIndex:indexPath.row]])               {
        [self.checkimageArray removeObject:[self.lblArray objectAtIndex:indexPath.row]];
        [self.checkboxmessageArray removeObject:[[self.inboxmessagesarray objectAtIndex:sender.tag]objectForKey:@"messageid"]];//here i am removing whien chekbox is unchecked
    else {
        [self.checkimageArray addObject:[self.lblArray objectAtIndex:indexPath.row]];
        [self.checkboxmessageArray addObject:[[self.inboxmessagesarray objectAtIndex:sender.tag]objectForKey:@"messageid"]];// i am getting exception in this line
    }
}

为什么我将这种异常困在其中很多天的原因是什么?

在cellForRowAtIndexPath方法中,将按钮标签值分配给indexPath值,例如

checkbox.tag=indexPath.row

从中获取价值

-(IBAction)checkButton:(UIButton *)sender
{

    [self.checkimageArray objectAtIndex:sender.tag];
    ///additional code

}

就像在ViewDidLoad创建一个常见的NSMutableArray

self.checkboxmessageArray =[NSMutableArray New];



-(IBAction)checkButton:(UIButton *)sender
    {
        CGPoint buttonPosition = [sender convertPoint:CGPointZero toView:self.tblvie];
        NSIndexPath *indexPath = [self.tblvie indexPathForRowAtPoint:buttonPosition];

        if ([self.checkimageArray containsObject:[self.lblArray objectAtIndex:indexPath.row]]) {
            [self.checkimageArray removeObject:[self.lblArray objectAtIndex:indexPath.row]];
            [self.checkboxmessageArray removeObject:[[self.inboxmessagesarray objectAtIndex:sender.tag]objectForKey:@"messageid"]];


        }


        else {
            [self.checkimageArray addObject:[self.lblArray objectAtIndex:indexPath.row]];

            messageid.text=[[self.inboxmessagesarray objectAtIndex:sender.tag]objectForKey:@"messageid"];
            [self.checkboxmessageArray addObject:[[self.inboxmessagesarray objectAtIndex:sender.tag]objectForKey:@"messageid"]];//assume that this is your message ID array,  here u convert the string



                            }
                            [self.tblvie reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation: UITableViewRowAnimationFade];

}

如果您想将messageID发送到服务器,请按照此步骤自定义

 NSString *finalIDStr;

if (self.checkboxmessageArray .count==0)
{
    finalIDStr=@"";
}
else
{


    NSData *data=[NSJSONSerialization dataWithJSONObject: self.checkboxmessageArray options:kNilOptions error:nil];
   finalIDStr=[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    NSLog(@"the final ID Str==%@",finalIDStr);

}

最终将此yourmessageidStr字符串传递给服务器

Console输出就像

  the final ID Str=["658681","655917","655904"]

暂无
暂无

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

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