Cómo eliminar un elemento de NSArray.NSArray + eliminar elemento de la matriz
Respuesta
NSArray no se puede modificar, es decir, no se puede modificar. Deberías echar un vistazo al NSMutableArray. Confirmar la sección "Extracción de Objetos", usted encontrará que hay muchas funciones que le permiten eliminar elementos:
[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];
eso es todo
si no propia your_array (es decir, se autoreleased) eliminar la versión & conservar mensajes
Esta categoría puede ser de su gusto. ¡Pero! Sé frugal con su uso; ya que estamos convirtiendo a NSMutableArray y viceversa, no es para nada eficiente.
@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
eres un campeón! Tuve que usar el método anterior porque ordené un NSMutableArray, lo que significa que el arreglo que uso en las celdas de mi tabla no es mutable. Por lo tanto, cuando voy a eliminar objetos de la matriz, utilizo su método para hacerlo. – fuzz
Hizo una categoría como mxcl, pero esto es un poco más rápido.
Mi prueba muestra ~ 15% de mejora (podría estar equivocado, no dude en comparar los dos).
Básicamente tomo la parte de la matriz que está delante del objeto y la parte de atrás y los combino. Por lo tanto, excluyendo el elemento.
- (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];' la inicialización aquí es redundante – Ossir
¿Qué pasa si obj es nulo? –
@Ossir Tienes razón, la declaración es redundante porque la parte '[self subarray ...]'. @Michael Ozeryansky, si el obj es nulo, 'indexOfObject' devolverá' NSNotFound'. No estoy seguro de lo que sucede entonces, pero probablemente no sea lo correcto, ¡gracias! – jmathew
Aquí es un enfoque más funcional utilizando valor-clave de codificación:
@implementation NSArray (Additions)
- (instancetype)arrayByRemovingObject:(id)object {
return [self filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF != %@", object]];
}
@end
¡listo! Gracias por compartir. – KPM
Retire Object
de NSArray
con este método:
-(NSArray *) removeObjectFromArray:(NSArray *) array withIndex:(NSInteger) index {
NSMutableArray *modifyableArray = [[NSMutableArray alloc] initWithArray:array];
[modifyableArray removeObjectAtIndex:index];
return [[NSArray alloc] initWithArray:modifyableArray];
}
- 1. elemento eliminar de la matriz
- 2. eliminar el primer elemento de la matriz
- 3. eliminar elemento de la matriz matlab
- 4. Eliminar elemento de la matriz y reducir la matriz
- 5. Cómo eliminar elemento de una matriz
- 6. Eliminar elemento de una matriz normal
- 7. Eliminar la primera instancia del elemento coincidente de la matriz
- 8. Eliminar elemento de la matriz multidimensional según la clave
- 9. Eliminar un elemento de una matriz (Java)
- 10. eliminar elemento de la matriz en función de su valor?
- 11. PHP: Eliminar el primer y último elemento de la matriz
- 12. PHP | ¿Eliminar elemento de la matriz con reordenamiento?
- 13. Eliminar elemento de la matriz, utilizando el segmento
- 14. Cómo eliminar elemento enésimo de la matriz en mongodb
- 15. ¿Cómo eliminar un elemento de matriz basado en la clave?
- 16. Matriz de ordenación (NSArray) en orden descendente
- 17. Escoja elemento aleatorio de NSArray en Objective-C
- 18. Jquery quitar el elemento de la matriz
- 19. Eliminar elemento de la matriz si el valor del elemento contiene el carácter de cadena buscado
- 20. Eliminar fila de la matriz php
- 21. Eliminar un elemento de una matriz por valor
- 22. ¿Cómo puedo eliminar un elemento de una matriz referenciada?
- 23. Eliminar un elemento de matriz y cambiar los restantes
- 24. lo bien eliminar elemento de la lista
- 25. ¿Cómo eliminar un elemento de una matriz en PowerShell?
- 26. Cómo eliminar un elemento de una matriz en C#
- 27. hallazgo elemento de la matriz
- 28. Keypath para el primer elemento en NSArray incorporado
- 29. NSArray. ¿Cómo implemento la función Mapa?
- 30. Enumeración de NSArray múltiple
Nota: [-removeObject:] (https : //developer.apple.com/library/ios/documentation/cocoa/reference/foundation/classes/NSMutableArray_Class/Reference/Reference.html#//apple_ref/oc c/instm/NSMutableArray/removeObject :) elimina ** todas las coincidencias ** en la matriz. – Pang