从 NSArray 中删除对象

Posted

技术标签:

【中文标题】从 NSArray 中删除对象【英文标题】:remove object from NSArray 【发布时间】:2011-09-15 06:12:43 【问题描述】:

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

目前我有一个NSMutableArray,然后我将其反转

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

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

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

我该怎么做?我无法让它工作。

【问题讨论】:

【参考方案1】:

你需要一个可变数组来移除一个对象。尝试使用mutableCopy 创建reversedCalEvents

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

if (someInt == someOtherInt)

    [reversedCalEvents removeObject:object];

【讨论】:

NSArray 根据定义是不可变的,这意味着一旦创建就不能更改分配数组的内容 是的。这就是我使用 NSMutableArray 的原因。【参考方案2】:

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

@implementation NSArray (Additions)

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


@end

【讨论】:

【参考方案3】:

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

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

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

【讨论】:

【参考方案4】:

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

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

第三,您可以通过向 UITableView 发送reloadData 消息来刷新它。

【讨论】:

【参考方案5】:

你可以试试这个:-

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

【讨论】:

以上是关于从 NSArray 中删除对象的主要内容,如果未能解决你的问题,请参考以下文章

如何从 NSArray 中删除 .DS_Store? [复制]

NSArray:删除具有重复属性的对象

如何根据项目内容从 NSArray 中删除项目

从 NSDictionary 对象的 NSArray 中,如何获取唯一的 NSArray

通过指定类名从 NSArray 中检索对象

将项目从 NSArray 传输到 NSManagedObject 的 NSSet