从NSArray中删除对象

时间:2011-09-15 06:12:44

标签: ios objective-c uitableview nsmutablearray nsarray

如何从反转NSArray中删除对象。

目前我有一个NSMutableArray,然后我用

反转它
NSArray* reversedCalEvents = [[calEvents reverseObjectEnumerator] allObjects];

现在我需要删除reversedCalEventscalEvents中的项目,并根据条件自动刷新数组显示的表格。 即。

if(someInt == someOtherInt){
    remove object at index 0
}

我该怎么做?我无法让它发挥作用。

5 个答案:

答案 0 :(得分:12)

您需要一个可变数组才能删除对象。尝试使用reversedCalEvents创建mutableCopy

NSMutableArray *reversedCalEvents = [[calEvents reverseObjectEnumerator] allObjects] mutableCopy];

if (someInt == someOtherInt)
{
    [reversedCalEvents removeObject:object];
}

答案 1 :(得分:12)

这是使用键值编码的更实用的方法:

@implementation NSArray (Additions)

- (instancetype)arrayByRemovingObject:(id)object {
    return [self filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF != %@", object]];
}

@end

答案 2 :(得分:2)

NSArray不可编辑,因此您无法修改它。

您可以将该数组复制到NSMutableArray并从中删除对象。最后将NSMutableArray的值重新分配给NSArray。

从这里你会得到一个更好的主意...... NSArray + remove item from array

答案 3 :(得分:0)

首先,您应该阅读NSMutableArray课程本身以熟悉它。

其次,this question应该向您展示一种从NSMutableArray实例中删除对象的简单方法。

第三,您可以通过向其发送reloadData消息来使UITableView更新。

答案 4 :(得分:0)

你可以试试这个: -

NSMutableArray* reversedCalEvents = [[[calEvents reverseObjectEnumerator] allObjects] mutableCopy];
            [reversedCalEvents removeLastObject];