2011-06-30 9 views
7

mam - metoda (CLLocationCoordinate2D), chcę wrócić wiele lokalizacji z tej metody (te lokalizacje są używanie w inny sposób) moja metoda wygląda tak,jak zwracać wiele wartości z metodą

-(CLLocationCoordinate2D) addressLocation{ 
- -------- 
---------- 
return location; 
} 

czy można zwrócić wiele lokalizacji (tzn. return location1, return location2 ...)? pomóż mi dziękuje

Odpowiedz

4

Dodaj swoje obiekty lokalizacji do tablicy i zwróć tablicę. na przykład

-(NSArray*) addressLocation{ 
    ... // Set your locations up 
    NSArray *array = [NSArray arrayWithObjects:location1, location2, nil]; 
    ... // Do any additional processing and return array. 
} 
+0

czy można zwrócić tablicę z metody CLLocationCoordinate2D? – sajaz

+2

George mówi, że trzeba przepisać sygnaturę metody, aby zwracała tablicę zamiast CLLocationCoordinate2D. Następnie w implementacji metody należy wypełnić tablicę współrzędnymi i zwrócić te. Zwróci się tylko jeden zwrot, a ta metoda zostanie wykonana. Nie można wykonać 2 lub więcej zwrotów w tym samym wywołaniu metody. – Andrew

+0

ya, wielkie dzięki. Mam to :) :) – sajaz

7

CLLocationCoordinate2D nie jest obiektem, więc nie można go dodać do tablicy i zwrócić. Ponieważ są one kodowanym istnieje kilka opcji,

  1. malloc tablicą stara moda sposób i skopiować dane struct do tablicy
  2. malloc nowy wskaźnik struct, skopiować dane, a następnie przechowywać wskaźnik w sposób NSValue
  3. utworzyć klasę, która ma takie same właściwości jak polach struktury, a także dodać, że do tablicy

opcji 1 i 2 wymagają dodatkowego zarządzania pamięcią o tym, kiedy uwolnić dane więc unikać tych. Opcja 3 jest dobra i tak się składa, że ​​MapKit oferuje klasę CLLocation. Oto przykład 2 współrzędnych.

-(NSArray*) addressLocations 
{ 
    CLLocationCoordinate2D coord1 = CLLocationCoordinate2DMake(1.00, 1.00); 
    CLLocationCoordinate2D coord2 = CLLocationCoordinate2DMake(2.00, 2.00); 

    CLLocation *loc1 = [[CLLocation alloc] initWithLatitude:coord1.latitude longitude:coord1.longitude]; 
    CLLocation *loc2 = [[CLLocation alloc] initWithLatitude:coord2.latitude longitude:coord2.longitude]; 

    NSArray *array = [NSArray arrayWithObjects:loc1, loc2, nil]; 

    [loc1 release]; 
    [loc2 release]; 

    return array; 
} 
+0

+1 za wskazanie odpowiedniej klasy zestawu map do wykonania pracy z – bshirley

Powiązane problemy