从Index中的NSMutableDictionary中删除对象

时间:2012-11-26 01:25:36

标签: objective-c ios xcode

我为字幕单元格配置了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];

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

2 个答案:

答案 0 :(得分:3)

由于indexPath.row是基本类型,因此不能将其用作NSDictionary中的键:您需要将其包含在NSNumber中才能执行此操作。

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

仅当您使用NSNumber - 包裹的整数作为NSMutableDictionary中的键时,此功能才有效。通常,由于NSDictionary是一个关联容器,因此您需要在removeObjectForKey的调用中使用与setObject:forKey:调用中相同的键。

答案 1 :(得分: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];