如何从NSArray中删除项目。NSArray +从阵列中删除项目
回答
NSArray不可变,也就是说,你不能修改它。你应该看看NSMutableArray。退房“删除对象”部分,你会发现有很多的功能,让您删除项目:
[anArray removeObjectAtIndex: index];
[anArray removeObject: item];
[anArray removeLastObject];
NSMutableArray *arrayThatYouCanRemoveObjects = [NSMutableArray arrayWithArray:your_array];
[arrayThatYouCanRemoveObjects removeObjectAtIndex:your_object_index];
[your_array release];
your_array = [[NSArray arrayWithArray: arrayThatYouCanRemoveObjects] retain];
这就是它
,如果你没有自己的your_array(即它的自动释放)删除发布&保留消息
此类别可能是你的口味。但!使用它要节俭;因为我们正在转换为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
你是冠军!我不得不使用上面的方法,因为我排序了一个NSMutableArray,这意味着我在我的表格单元格中使用的数组是不可变的。因此,当我去从数组中删除对象时,我使用你的方法来做到这一点。 – fuzz 2011-02-06 10:34:05
做了一个类似mxcl的类,但是这个速度稍快。
我的测试显示〜15%的提高(我可能是错的,随时可以自己比较两者)。
基本上我把这个数组的那部分放在对象的前面,并把它们组合起来。因此排除元素。
- (NSArray *)prefix_arrayByRemovingObject:(id)object
{
if (!object) {
return self;
}
NSUInteger indexOfObject = [self indexOfObject:object];
NSArray *firstSubArray = [self subarrayWithRange:NSMakeRange(0, indexOfObject)];
NSArray *secondSubArray = [self subarrayWithRange:NSMakeRange(indexOfObject + 1, self.count - indexOfObject - 1)];
NSArray *newArray = [firstSubArray arrayByAddingObjectsFromArray:secondSubArray];
return newArray;
}
下面是使用键 - 值编码一个功能更强大的方法:
@implementation NSArray (Additions)
- (instancetype)arrayByRemovingObject:(id)object {
return [self filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF != %@", object]];
}
@end
聪明!感谢分享。 – KPM 2014-10-27 22:47:45
从NSArray
本办法删除Object
:
-(NSArray *) removeObjectFromArray:(NSArray *) array withIndex:(NSInteger) index {
NSMutableArray *modifyableArray = [[NSMutableArray alloc] initWithArray:array];
[modifyableArray removeObjectAtIndex:index];
return [[NSArray alloc] initWithArray:modifyableArray];
}
- 1. 从PHP阵列中删除项目
- 2. 从阵列中删除项目 - 角4
- 3. 从阵列中删除项目
- 4. 无法删除阵列中的项目
- 5. 从敲除可观察阵列中删除项目
- 6. Android - 从阵列列表中删除项目ID
- 7. 从阵列中删除重复项
- 8. 从二维阵列中删除条目
- 9. 如何删除阵列淘汰项目
- 10. 单车阵列和删除项目
- 11. 删除阵列嵌套一个NSArray的(目标C)
- 12. 从列表中删除项目而不从数据源中删除项目 - c#
- 13. 从列表中删除项目不从RecyclerView中删除它们?
- 14. php从php阵列中删除项目/变量使用按钮
- 15. 从PHP阵列中删除随机项目
- 16. 使用arraycopy从阵列中删除项目
- 17. 未从阵列会话中删除的项目
- 18. 使用拼接从阵列中删除项目
- 19. 使用Angular从阵列中删除项目
- 20. 删除除了具有最高值的项目的所有项目从阵列
- 21. 从NSArray删除UIView
- 22. 删除/从阵列
- 23. JavaScript - 从阵列中删除
- 24. Android Firebase从列表中删除项目
- 25. 从列表视图中删除项目
- 26. Python从列表中删除项目
- 27. Sharepoint REST - 从列表中删除项目
- 28. 从链接列表中删除项目
- 29. 从列表C#中删除项目#
- 30. 从列表中删除项目
注:[-removeObject:(HTTPS ://developer.apple.com/library/ios/documentation/cocoa/reference/foundation/classes/NSMutableArray_Class/Reference/Reference.html#//apple_ref/oc c/instm/NSMutableArray/removeObject :)删除数组中所有匹配的事件**。 – Pang 2014-03-13 09:17:45