first array arrays swift swift3 contains

arrays - array - ¿Cómo puedo verificar si una estructura está en la matriz de estructuras basada en su campo en Swift3?



swift array contains where (3)

En lugar de crear el objeto de MyStruct antes de verificar su existencia, solo necesita crear si no existe en Array . También como sugerencia cree un método init en MyStruct como init(coordinate: CLLocationCoordinate2D, name: String, id: String) reducirá su código de inicialización de cada propiedad de instancia en una nueva línea.

open class MyStruct : NSObject { open var coordinate = CLLocationCoordinate2D(latitude: 0, longitude: 0) open var username: String? = "" open var id: String? = "" init(coordinate: CLLocationCoordinate2D, name: String, id: String) { self.coordinate = coordinate self.username = name self.id = id } }

Ahora comprueba si contiene algo como esto.

if !array.contains(where: {$0.id == request.id}) { let pinOne = MyStruct(coordinate: CLLocationCoordinate2D(latitude: request.latitude, longitude: request.longitude), name: request.username, id: request.id) self.array.append(pinOne) }

En mi aplicación swift tengo una estructura:

open class MyStruct : NSObject { open var coordinate = CLLocationCoordinate2D(latitude: 0, longitude: 0) open var username: String? = "" open var id: String? = "" }

Y creo una matriz de esto:

var array:[MyStruct] = []

Entonces estoy creando un objeto:

let pinOne = MyStruct() pinOne.coordinate = CLLocationCoordinate2D(latitude: request.latitude, longitude: request.longitude) pinOne.username = request.username pinOne.id = request.id

y quiero agregarlo a la matriz solo si la matriz no lo contiene. Intenté con esto:

if(!(self.array.contains(pinOne))){ self.array.append(pinOne) }

Pero no funcionó, así que pensé que, dado que tengo id únicos, podría usar ese campo para comparar objetos. Pero no sé cómo comparar los campos de las estructuras en este caso. ¿Me puede ayudar con eso?


Más corto y simple:

if array.index(where: {$0.id == pineOne.id}) == nil { array.append(pineOne) }


if(array.contains({$0.id==pinOne.Id})) { array.addElement(pinOne); }