3

我有一个UITableView为字幕单元格配置的。当我向其中添加一个单元格时,TableView我有两个数组。一个用于副标题,另一个用于主标签。我也有一个NSMutableDictionary这样,当我将单元格添加到表中时,它会记录一个对象和一个键。我的问题是当我想从UITableView我使用此方法中删除单元格时:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {
    [myArray removeObjectAtIndex:indexPath.row];
    [numberArray removeObjectAtIndex:indexPath.row];


    [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
} else if (editingStyle == UITableViewCellEditingStyleInsert) {
    // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view.
}
}

这对于从关联数组中删除对象非常有用,但我也想从MutableDictionary我创建的对象中删除对象。我认为你会使用类似于我在数组中使用的东西。

[myArray removeObjectAtIndex:indexPath.row];

但我不能使用

 [myDictionary removeObjectForKey:indexPath.row];

有谁知道我会怎么写这个?

4

2 回答 2

3

由于indexPath.row是原始类型,因此它不能用作 中的键NSDictionary:您需要将其包装起来NSNumber才能这样做。

[myDictionary removeObjectForKey:[NSNumber numberWithInt:indexPath.row]];

仅当您使用NSNumber-wrapped 整数作为NSMutableDictionary. 通常,由于NSDictionary是关联容器,因此您需要在 的调用中使用与在 的调用中使用的键相同的removeObjectForKeysetObject:forKey:

于 2012-11-26T01:30:59.960 回答
1

使用此代码从 NSMutableDictionary 中删除数据

//First get all the keys of dictionary into one array
 NSArray *sectionsArray = [mutaleDictionary allKeys];
//Get all the data of tapped section into one array by using indexpath.section
 NSMutableArray *objectsAtSection = [mutaleDictionary valueForKey:[sectionsArray objectAtIndex:indexPath.section]];
//remove the particular object by using indexPath.row from the array
 [objectsAtSection removeObjectAtIndex:indexPath.row]; 
于 2013-04-23T07:47:59.483 回答