从NSArray中移除对象

5

如何从一个反转的NSArray中移除一个对象。

目前我有一个NSMutableArray,然后我用以下代码将其反转:

NSArray* reversedCalEvents = [[calEvents reverseObjectEnumerator] allObjects];

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

例如:

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

我该怎么做?我无法使它工作。
5个回答

13

以下是使用 Key-Value Coding 更为实用的方法:

@implementation NSArray (Additions)

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

@end

12
您需要一个可变数组才能删除对象。尝试使用mutableCopy创建reversedCalEvents可变副本。
NSMutableArray *reversedCalEvents = [[calEvents reverseObjectEnumerator] allObjects] mutableCopy];

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

1
NSArray 的定义是不可变的,这意味着一旦创建,您无法更改分配的数组的内容。 - user210504
4
是的,这就是为什么我使用了NSMutableArray。 - Mark Adams

2

NSArray是不可编辑的,所以您无法修改它。

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

从这里您将获得更好的想法...NSArray + remove item from array


0

你可以试试这个:

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

0
首先,你应该阅读关于NSMutableArray类本身的内容,以熟悉它。
其次,这个问题应该向你展示了一种从NSMutableArray实例中移除对象的简单方法。
第三,你可以通过发送reloadData消息来使UITableView刷新。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接