2011-12-30 9 views
0

ここで私がこれを読んでもいいかもしれませんか、私に例を挙げてください。NSArrayにこのコードを変更する方法はありますか?NSArrayに変換する - iOS sdk

-(void)loadOurAnnotations 
{ 
CLLocationCoordinate2D workingCoordinate; 

workingCoordinate.latitude = -37.711455; //This has to be an integer 
workingCoordinate.longitude = 176.285013; //This has to be an integer 
MyAnnotation *myLocation1 = [[MyAnnotation alloc] initWithCoordinate:workingCoordinate]; //The pointer has to be set to an array 
[myLocation1 setTitle:@"The Palms Cafe"]; //The pointer and the setTitle here 
[myLocation1 setSubtitle:@"157 Domain Road - (07) 542 2430"]; //The pointer and the setSubTitle here 
[myLocation1 setAnnotationType:MyAnnotationTypeMine]; //again the pointer here 

[mapView addAnnotation:myLocation1]; //and the pointer here 

} 

ポインタの全ては明らかに、アレイ内の同じ場所から来て、(中括弧内の)コードの全作品が一つのレコードであるので、私は別の場所を追加したい場合、私はコピーする必要がありますそのすべてを再び。

それでは、私が達成したいと思っています、私はそこにレコードを追加できるように、Plistにそれを設定し、だけ-(void)loadOurAnnotationsが一度コードで設定されており、自分自身を繰り返すことです。もちろん、もし私が-(void)loadOurAnnotationsをドロップしなければならないのなら、それは問題ではない、私は今のところそれを持っている。

私が収集した情報で伝えることができるので、これらはMKMapViewの注釈として表されます。

すべてのヘルプは

まず、

-Jeff

+3

私はここにいくつかの混乱があると思います。緯度と経度は整数であってはなりません。二重でなければなりません(CLLocationDegrees)。それを整数に変換すると、読みの精度が大幅に低下します。特に配列にセットしたいのですか?表示された方法は、常に同じ場所を生成します。このメソッドが呼び出されるたびに 'MyAnnotation'を返すようにして、配列に' MyAnnotation'を追加しますか? – keyboardP

+0

ああ、私が見たいのは、上記のようなレコードを追加してマップ上に注釈として表示することです。タイトルをユーザーが選択できるように、テーブルビューに表示する必要があります。私はレコードのリストを持っていましたが、それらはすべてその空白の中に入れられました。そのため大量の実装ファイルが作成される可能性がありました。したがって、適切な配列とplistに設定したいと思います。これが明確になることを願っていますか? CHeers -Jeff –

+0

私は 'ubaltaci's'答えがそれを説明していると思う。答えの中で一度にループしたくない場合は、 'loadOutAnntations'メソッドのシグネチャを変更してパラメータを許可することができます。これにより、 'loadOurAnnotations(lat、long、title、subtitle、annotationtype);'のようなことを行い、関連する情報でパラメータを置き換えることができます。このメソッドでは、それは 'workingCoordinate.latitude = lat; workingCoordinate.longitude = long;つまり、コードをコピーして貼り付ける必要がなくなり、たびにloadOurAnnotations(...)を呼び出すことができます。 – keyboardP

答えて

0

私が正しく理解している場合:-)評価されて:あなたは、いくつかのモーダルクラス経由にNSArrayにplistファイルからデータを読み込みます。 (単にモーダルクラス「場所」以下の例では、と私はコアデータ経由で記入)第

// Location.h 
@interface Location : NSManagedObject 

@property (nonatomic, strong) NSNumber * longitude; 
@property (nonatomic, strong) NSNumber * latitude; 
@property (nonatomic, strong) NSString * name; 

@end 

// Location.h 
@implementation Location 

@dynamic longitude; 
@dynamic latitude; 
@dynamic name; 

@end 

:方法あなたの「loadOurAnnotations」では、Locationオブジェクトが含まれており、それぞれの「locationArray」内のすべての値を反復処理しますLocationオブジェクト、私はPinLocationインスタンス(MkAnnotationのサブクラス)を作成し、それらをmapViewに追加します。

for(Location *location in locationArray) { 
    NSString *name = [location name]; 
    CLLocationCoordinate2D coordinate; 
    coordinate.latitude = [[location latitude] doubleValue]; 
    coordinate.longitude = [[location longitude] doubleValue]; 

    PinLocation *pinLocation = [[PinLocation alloc] initWithName:name coordinate:coordinate]; 
    [self.mapView addAnnotation:pinLocation];  
} 
関連する問題