So entfernen Sie ein Objekt von NSArray.NSArray + Element vom Array entfernen
Antwort
NSArray ist nicht änderbar, dh Sie können es nicht ändern. Sie sollten einen Blick auf NSMutableArray werfen. Schauen Sie sich den Abschnitt „Objekte entfernen“, werden Sie es viele Funktionen, die es Ihnen ermöglichen, Elemente zu entfernen:
[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];
, die etwa ist es
, wenn Sie eigene your_array nicht (dh es Autoreleased) Entfernen Sie die Freigabe & Retain Nachrichten
Diese Kategorie kann nach Ihrem Geschmack sein. Aber! Sei sparsam mit seiner Verwendung; Da wir in ein NSMutableArray und wieder zurück konvertieren, ist es überhaupt nicht effizient.
du bist ein Champion! Ich musste die obige Methode verwenden, weil ich ein NSMutableArray sortiere, was bedeutet, dass das Array, das ich in meinen Tabellenzellen verwende, nicht veränderbar ist. Wenn ich also Objekte aus dem Array entferne, benutze ich Ihre Methode dazu. – fuzz
Eine Kategorie wie mxcl gemacht, aber das ist etwas schneller.
Meine Tests zeigen ~ 15% Verbesserung (ich könnte falsch liegen, fühlen Sie sich frei, die zwei selbst zu vergleichen).
Grundsätzlich nehme ich den Teil des Arrays vor dem Objekt und den Teil dahinter und kombiniere sie. Also das Element ausschließen.
- (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;
}
'NSArray * newArray = [NSArray-Array];' Initialisierung ist hier redundant – Ossir
Was ist, wenn obj ist Null? –
@Ossir Sie haben Recht, die Deklaration ist redundant, weil der '[self subarray ...]' Teil. @Michael Ozeryansky, wenn das obj ist nil 'indexOfObject' wird' NSNotFound' zurückgeben. Ich bin mir nicht sicher, was dann passiert, aber es ist wahrscheinlich nicht das Richtige, danke! – jmathew
Hier ist ein funktioneller Ansatz Schlüsselwert Coding:
@implementation NSArray (Additions)
- (instancetype)arrayByRemovingObject:(id)object {
return [self filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF != %@", object]];
}
@end
Clever! Danke für das Teilen. – KPM
entfernen Object
von NSArray
mit dieser Methode:
-(NSArray *) removeObjectFromArray:(NSArray *) array withIndex:(NSInteger) index {
NSMutableArray *modifyableArray = [[NSMutableArray alloc] initWithArray:array];
[modifyableArray removeObjectAtIndex:index];
return [[NSArray alloc] initWithArray:modifyableArray];
}
- 1. Element aus Array entfernen
- 2. Erstes Element von NSArray
- 3. Array Element für Element entfernen Zeiger (Alias)
- 4. jQuery Element aus Array entfernen
- 5. entfernen Sie doppeltes Array Element
- 6. Entfernen Element aus dem Array
- 7. Swift Entfernen Element in Array
- 8. Entfernen von Duplikaten in Nsarray
- 9. Keypath für erstes Element in eingebettetem NSArray
- 10. Wie Array-Element in Mongodb entfernen?
- 11. NSArray zu C-Array
- 12. Objekt aus NSMutableArray entfernen, das NSArray enthält
- 13. PHP entfernen bestimmtes Element von Array
- 14. Übergeordnetes Element in mehrdimensionalem PHP-Array entfernen
- 15. ruby Ein Element aus dem Array entfernen
- 16. JavaScript-Array-Element aus HTML entfernen?
- 17. Entfernen Array-Element aus dem lokalen Speicher
- 18. Vanilla JS Entfernen Array-Element durch Referenz
- 19. php entfernen ein Element aus dem Array
- 20. Element aus der Array-Funktion entfernen
- 21. Element in mehrdimensionalen Array entfernen und speichern
- 22. PHP - Entfernen Element in mehrdimensionales Array
- 23. Entfernen Sie dasselbe Element Array in Delphi
- 24. Spleiß nicht entfernen Element von Array
- 25. Javascript - Array-Element unter Bedingung entfernen
- 26. Entfernen Zeichenfolge Element aus JavaScript-Array
- 27. Objective-C Entfernen Sie die zusätzlichen Klammern innerhalb NSArray
- 28. Konvertieren von Swift Array in NSArray
- 29. Swift 2.2 - NSArray Element konnte nicht Swift Array Element Typ für Zellen in einem TableViewController
- 30. PFSubclassing mit array pointer und swift 1.2 - fataler Fehler: NSArray Element konnte dem Swift Array Element Typ nicht entsprechen
Hinweis: [-removeObject:] (https : //developer.apple.com/library/ios/documentation/cocoa/reference/foundation/classes/NSMutableArray_Class/Reference/Reference.html#//apple_ref/oc c/instm/NSMutableArray/removeObject :) löscht ** alle übereinstimmenden Vorkommen ** im Array. – Pang