Sto tentando di aggiornare un MKMapView rimuovendo tutte le annotazioni al di fuori dell'area visibile e aggiungendo e rimuovendo alcune annotazioni all'interno dell'area visibile. Questo è il mio codice:NSSet to 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];
Questo mi dà l'errore - [__ NSCFSet objectAtIndex:]: selettore non riconosciuto inviato ad esempio 0x13cd40 dopo la riga finale in cui ho lanciato newAnnotations a un NSArray quindi aggiungere le annotazioni. C'è qualcosa nel lanciare un array su un set che lo causa? Se è così, c'è un modo per aggirarlo?
allObjects modifica l'ordine. Quindi objectAtIndex potrebbe non restituire l'inteso. – Vignesh
@Vignesh Non sequitur. Un set non è ordinato. –
La soluzione suggerita qui non funziona per me ...'[theNSSet allObjects]' aggiunge semplicemente NSSet come oggetto all'interno di un NSArray, che è un fallimento, perché non ho bisogno di un NSSet INSIDE di un NSArray, ho bisogno di un NSArray DAL contenuto del NSSet –