在NSTableView中从数组中删除对象

时间:2009-06-20 23:49:35

标签: iphone cocoa cocoa-touch nstableview

快一点。我忽视了一些事情......

我有一个分组表视图,它是从NSDictionary中的数组构建的。每个数组都是表的一部分。当处于编辑模式并且用户点击“删除”时,我呼叫

- (void)removeObject:(MyClass *)myObject 

如何确定发送消息的数组[myArray removeObject:myObject]? NSDictionary没有indexOfObject:方法但NSArray却有。我想我可以迭代遍历每个数组寻找所述对象,但这似乎不对。

有人可以滔滔不绝地说出我的大脑吗?!? THX!

3 个答案:

答案 0 :(得分:0)

你应该知道哪个tableView发送了消息(因为有问题的方法在该对象的委托中) - 因此你可以在tableView委托的viewDidLoad方法中创建数组,或者另外找出它是哪一个基于委托上下文。

答案 1 :(得分:0)

我没有看到迭代数组的任何明显错误。人们多久会删除一些东西,字典真的大到足以使这成为一个重要的开销吗?

作为参考点,NSArray的indexOfObject:方法没有做什么比迭代通过查找匹配对象的数组更好。

答案 2 :(得分:0)

您可以实现标准的UITableView协议并使用此方法:

(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle<br> forRowAtIndexPath:(NSIndexPath *)indexPath {
     <br><br>//check the section according to your array, if(indexPath.section ==....
     <br><br>
    if(editingStyle == UITableViewCellEditingStyleDelete) {
     <br>
    [arrayFoundBefore removeObjectAtIndex:indexPath.row];
    <br> 
    }
    <br>}

我认为这是做到这一点的方式,但不确定。任何人都可以澄清吗?