Ciao a tutti, sto imparando piano piano questo linguaggio e spesso ho problemi che magari sono stupidi ma non riesco a risolvere.
Ho un file plist e leggo tutti i dati contenuti nel file plist con un ciclo (sono dei dati di luoghi), fatto questo salvo ogni singolo valore in un array utilizzando anche una classe, finito questo vorrei ordinare l'array ottenuto partendo dalla distanza più vicina a quella più lontana ma purtroppo non riesco!
questo è il mio codice:
codice:
...
NSString *path = [[NSBundle mainBundle] pathForResource:@"listaLuoghi" ofType:@"plist"];
NSArray *cities = [NSArray arrayWithContentsOfFile:path];
self.arrayLuoghi = [[[NSMutableArray alloc] initWithCapacity:[cities count]] autorelease];
NSDictionary *city;
// ciclo il file e recupero i dati che mi servono e li inserisco in un array per poterli usare anche in altre parti del codice
for (city in cities)
{
Luoghi *nuovoLuogo = [[Luoghi alloc] init];
nuovoLuogo.name = [city objectForKey:@"nomeChiave"];
nuovoLuogo.latitude = [city objectForKey:@"latitudineChiave"];
nuovoLuogo.longitude = [city objectForKey:@"longitudineChiave"];
nuovoLuogo.indirizzo = [city objectForKey:@"indirizzoChiave"];
nuovoLuogo.comune = [city objectForKey:@"comuneChiave"];
nuovoLuogo.provincia = [city objectForKey:@"provinciaChiave"];
// ottengo la distanza
CLLocationDegrees latitudinePunto = (CLLocationDegrees) [[city objectForKey:@"latitudineChiave"] doubleValue];
CLLocationDegrees longitudinePunto = (CLLocationDegrees) [[city objectForKey:@"longitudineChiave"] doubleValue];
CLLocation *miaPosizione = [[CLLocation alloc] initWithLatitude:mappa.userLocation.coordinate.latitude longitude:mappa.userLocation.coordinate.longitude];
CLLocation *nuovoPunto = [[CLLocation alloc] initWithLatitude:latitudinePunto longitude:longitudinePunto];
distance = [miaPosizione distanceFromLocation:nuovoPunto] / 1000;
[miaPosizione release];
[nuovoPunto release];
nuovoLuogo.distanza = [NSString stringWithFormat:@"%.0f km", distance];
[self.arrayLuoghi addObject:nuovoLuogo];
[nuovoLuogo release];
}
NSSortDescriptor *sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"distanza" ascending:YES] autorelease];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
NSArray *arrayLuoghiOrdinato = [arrayLuoghi sortedArrayUsingDescriptors:sortDescriptors];
self.arrayLuoghi = arrayLuoghiOrdinato;
...
e questo è il codice della classe luoghi
codice:
#import <Foundation/Foundation.h>
#import <CoreLocation/CoreLocation.h>
@interface Luoghi: NSObject
{
CLLocationCoordinate2D coordinate;
NSString *name;
NSNumber *latitude;
NSNumber *longitude;
NSString *tagg;
NSString *distanza;
NSString *indirizzo;
NSString *comune;
NSString *provincia;
// NSString *image;
}
@property (nonatomic, retain) NSString *name;
@property (nonatomic, retain) NSNumber *latitude;
@property (nonatomic, retain) NSNumber *longitude;
@property (nonatomic, retain) NSString *tagg;
@property (nonatomic, retain) NSString *distanza;
@property (nonatomic, retain) NSString *indirizzo;
@property (nonatomic, retain) NSString *comune;
@property (nonatomic, retain) NSString *provincia;
// the coordinate is a derived property based on the properties latitude and longitude.
@property (nonatomic, assign, readonly) CLLocationCoordinate2D coordinate;
@end
grazie a tutti quelli che possono aiutarmi....