[英]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.