我为字幕单元格配置了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];
有谁知道我会怎么写这个?
答案 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];