如何從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