Estoy tratando de actualizar un MKMapView eliminando todas las anotaciones fuera del área visible y agregando y eliminando algunas anotaciones dentro del área visible. Este es mi código:NSSet a NSArray casting calling objectAtIndex?
NSSet *visibleAnnotations = [mapView annotationsInMapRect:[mapView visibleMapRect]];
NSSet *allAnnotations = [NSSet setWithArray:[mapView annotations]];
NSMutableSet *nonVisibleAnnotations = [NSMutableSet setWithSet:allAnnotations];
[nonVisibleAnnotations minusSet:visibleAnnotations];
[mapView removeAnnotations:(NSArray *)nonVisibleAnnotations];
NSMutableSet *newAnnotations = [NSMutableSet setWithArray:[_zoomLevels objectAtIndex:clusterLevel]];
[newAnnotations minusSet:visibleAnnotations];
[mapView addAnnotations:(NSArray *)newAnnotations];
Esto me da el error - [__ NSCFSet objectAtIndex:]: Selector no reconocido enviado a la instancia 0x13cd40 después de la última línea en la que yo echo newAnnotations a un NSArray a continuación, añadir las anotaciones. ¿Hay algo acerca de lanzar una matriz a un conjunto que causa esto? Si es así, ¿hay una forma de evitarlo?
allObjects cambia el orden. Por lo tanto, objectAtIndex puede no devolver el deseado. – Vignesh
@Vignesh Non sequitur. Un conjunto no está ordenado. –
La solución sugerida aquí no funciona para mí ...'[theNSSet allObjects]' simplemente agrega el NSSet como un objeto dentro de un NSArray, que es un error, porque no necesito un NSSet INSIDE un NSArray, necesito un NSArray FROM los contenidos del NSSet –