NSArray +从数组中删除项目

pra*_*tik 44 iphone nsarray

如何从NSArray中删除项目.

luv*_*ere 125

NSArray不可变,也就是说,你不能修改它.你应该看看NSMutableArray.查看"删除对象"部分,您会发现有许多功能可以删除项目:

[anArray removeObjectAtIndex: index];
[anArray removeObject: item];
[anArray removeLastObject];
Run Code Online (Sandbox Code Playgroud)

  • 注意:[ - removeObject:](https://developer.apple.com/library/ios/documentation/cocoa/reference/foundation/classes/NSMutableArray_Class/Reference/Reference.html#//apple_ref/occ/instm/NSMutableArray/ removeObject :)删除数组中所有匹配的匹配项**. (3认同)

ahm*_*rah 24

NSMutableArray *arrayThatYouCanRemoveObjects = [NSMutableArray arrayWithArray:your_array];

[arrayThatYouCanRemoveObjects removeObjectAtIndex:your_object_index];

[your_array release];

 your_array = [[NSArray arrayWithArray: arrayThatYouCanRemoveObjects] retain];
Run Code Online (Sandbox Code Playgroud)

这就是它

如果您不拥有your_array(即它已自动释放),请删除发布并保留消息


mxc*_*xcl 20

此类别可能符合您的口味.但!使用它是节俭的; 因为我们正在转换为NSMutableArray并再次返回,所以效率并不高.

@implementation NSArray (mxcl)

- (NSArray *)arrayByRemovingObject:(id)obj
{
    if (!obj) return [self copy]; // copy because all array* methods return new arrays
    NSMutableArray *mutableArray = [NSMutableArray arrayWithArray:self];
    [mutableArray removeObject:obj];
    return [NSArray arrayWithArray:mutableArray];
}

@end
Run Code Online (Sandbox Code Playgroud)


Rud*_*vič 18

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

@implementation NSArray (Additions)

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

@end
Run Code Online (Sandbox Code Playgroud)