2011-06-30 36 views
7

Tôi có - Phương pháp (CLLocationCoordinate2D), tôi muốn quay trở lại nhiều địa điểm từ phương pháp đó (những địa điểm được sử dụng trong phương pháp khác) phương pháp của tôi trông như thế này,thế nào để trả lại nhiều giá trị từ một phương pháp

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

có thể trả về nhiều vị trí (ý tôi là trả lại vị trí1, trả lại vị trí2.. ..) ?? hãy giúp tôi cảm ơn

Trả lời

4

Thêm đối tượng vị trí của bạn vào mảng và trả về mảng thay thế. ví dụ.

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

có thể trả lại mảng từ phương thức CLLocationCoordinate2D không ?? – sajaz

+2

Điều George đang nói là bạn cần phải viết lại chữ ký phương thức của bạn để nó trả về một mảng thay vì một CLLocationCoordinate2D. Sau đó, trong việc thực hiện phương pháp, bạn nên điền vào một mảng với tọa độ và trả về các giá trị đó. Chỉ có 1 trở lại sẽ cháy, sau đó phương pháp đó được thực hiện. Bạn không thể thực hiện 2 hoặc nhiều lần trả về trong cùng một cuộc gọi phương thức. – Andrew

+0

ya, cảm ơn rất nhiều bạn. Tôi đã nhận nó :) :) – sajaz

7

CLLocationCoordinate2D không phải là đối tượng để không thể thêm vào mảng và trả về. Vì họ là những cấu trúc có một vài lựa chọn,

  1. malloc một mảng cách thời trang cũ và sao chép dữ liệu struct vào mảng
  2. malloc một con trỏ cấu trúc mới, sao chép dữ liệu, sau đó lưu trữ các con trỏ trong một NSValue
  3. Tạo một lớp có các thuộc tính giống như các lĩnh vực của cấu trúc, và thêm rằng đến một mảng

Lựa chọn 1 và 2 yêu cầu quản lý bộ nhớ bổ sung đến khi giải phóng dữ liệu để tránh những. Tùy chọn 3 là tốt và nó chỉ như vậy xảy ra MapKit cung cấp các lớp CLLocation. Dưới đây là ví dụ về 2 tọa độ.

-(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 để chỉ ra lớp bộ bản đồ liên quan để thực hiện công việc – bshirley

Các vấn đề liên quan