Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [objective-c]

    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....

  2. #2
    Ciao, è possibile definire un file chiamato commons.h nel quale poter inserire tanti oggetti come l'oggetto "Luogo"?
    In object-c come si usano struct e vector (che se non ho capito male sono NSMutableArray)?

  3. #3
    Perdonami non sono tanto esperto mi puoi fare un esempio? perchè sono davvero disperato se non ordino questo maledetto array....

    grazie

  4. #4
    E' da 2 settimane che studio questo linguaggio per cui ne so poco.
    Non riesci a scambiare gli elementi dell'array (primo col secondo se il primo è maggiore del secondo e così via)?

  5. #5
    Ah scusa non avevo capito....... te dici di non fare l'ordinamento ma di controllare volta per volta se un record è più grande o più piccolo del precedente e salvarlo di conseguenza....
    Posso provare questa soluzione in effetti, grazie mi hai dato un'idea
    Provo...

  6. #6
    Bé no, io dicevo così:

    Dato un array che contiene n elementi eseguo:


    bool ordinato= false
    while not ordinato {
    ordinato= true
    for a= 0 to length(array)- 2 {
    if array[a]> array[a+1] then {
    puntatore *b= array[a];
    array[a]= array[a+ 1];
    array[a+ 1]= b;
    ordinato= false
    break
    }
    }
    }

    Si tratta di un algoritmo di ordinamento che ha un nome che non ricordo.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.