2011-06-30 10 views
7

から複数の値を返すために私が持っている - (CLLocationCoordinate2D)メソッドは、私は、(これらの場所は、別の方法で使用している) 私の方法は次のようになり、そのメソッドから複数の場所を返すようにしたいはどの方法

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

複数の場所を返すことが可能です(私は返信場所1、返信場所2 .. ..)?助けてください ありがとう

答えて

4

場所オブジェクトを配列に追加し、代わりに配列を返します。例えば

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

CLLocationCoordinate2Dメソッドから配列を返すことは可能ですか? – sajaz

+2

Georgeが言っていることは、CLLocationCoordinate2DではなくArrayを返すように、メソッドシグネチャを書き直す必要があるということです。次に、メソッドの実装では、座標を持つ配列を入力して返します。 1回のリターンだけが発動し、その方法が実行されます。同じメソッド呼び出しで2つ以上のリターンを行うことはできません。 – Andrew

+0

よ、おかげでたくさんの人。私はそれを持って:) :) – sajaz

7

CLLocationCoordinate2Dはオブジェクトではないため、配列に追加して返すことはできません。彼らは構造体であるためそこに、

  1. malloc配列昔ながらの方法でいくつかのオプションがあり、その後にポインタを格納し、データをコピーし、配列
  2. malloc新しい構造体ポインタへの構造体のデータをコピーしますNSValue
  3. は、構造体のフィールドと同じ特性を持つクラスを作成し、そのため、それらを回避するためのデータを解放するときのように、追加のメモリ管理を必要とするアレイ

オプション1及び2にそれを追加します。オプション3はいいですし、MapKitはクラスCLLocationを提供しています。 2つの座標の例を示します。

-(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するための+1 – bshirley

関連する問題