objects for diccionarios diccionario arreglos array arrays swift3

arrays - diccionarios - for en swift



Eliminar objeto especĂ­fico de la matriz en swift 3 (3)

Según su código, la mejora podría ser así:

if let index = arrPickerData.index(where: { $0.tag == pickerViewTag }) { arrPickerData.remove(at: index) //continue do: arrPickerData.append(...) }

El índice existente significa que la matriz contiene el objeto con esa etiqueta.

Tengo un problema al intentar eliminar un objeto específico de una matriz en Swift 3. Quiero eliminar un elemento de una matriz como en la captura de pantalla, pero no conozco la solución.

Si tiene alguna solución, por favor comparta conmigo.



Respuesta corta

puede encontrar el índice del objeto en la matriz y luego eliminarlo con el índice.

var array = [1, 2, 3, 4, 5, 6, 7] var itemToRemove = 4 if let index = array.index(of: itemToRemove) { array.remove(at: index) }

Respuesta larga

Si los elementos de su matriz confirman el protocolo Hashable, puede usar

array.index(of: itemToRemove)

porque Swift puede encontrar el índice al verificar el valor de hashValue de los elementos de la matriz.

pero si sus elementos no confirman el protocolo Hashable o si no desea encontrar la base del índice en hashValue, debe indicar al método de índice cómo encontrar el elemento. así que usa el índice (donde:) en lugar de eso, le pide que proporcione un indicador de predicado para encontrar el elemento correcto

// just a struct which doesn''t confirm to Hashable struct Item { let value: Int } // item that needs to be removed from array let itemToRemove = Item(value: 4) // finding index using index(where:) method if let index = array.index(where: { $0.value == itemToRemove.value }) { // removing item array.remove(at: index) }

Si está utilizando el método de índice (donde :) en muchos lugares, puede definir una función de predicado y pasarla al índice (donde :)

// predicate function for items func itemPredicate(item: Item) -> Bool { return item.value == itemToRemove.value } if let index = array.index(where: itemPredicate) { array.remove(at: index) }

Para obtener más información, lea los documentos para desarrolladores de Apple:

index(where:)

index(of:)