2013-09-03 3 views
7

Obj Cにちょうど入っています。MKAnnotationsの配列を作成しようとしています。NSMutableArrayを作成し、それに特定のオブジェクトを割り当てる方法は?

名前、説明、緯度、経度を含むTruckLocationという名前のMKAnnotationクラスが既に作成されています。ここで

は、私は、配列のために、これまで持っているものです。

NSMutableArray* trucksArray =[NSMutableArray arrayWithObjects: @[<#objects, ...#>] nil]; 

答えて

16

ヨレは似ていますが、別のもののために2つの異なる構文を組み合わせることしようとしています。また、アノテーションのインスタンスがないようです。

その後、我々は彼らに

NSMutableArray *trucksArray = [NSMutableArray arrayWithObjects:a1, a2, nil]; 

それとも

NSMutableArray *trucksArray = [@[a1, a2] mutableCopy] 

を追加することができます

TruckLocation *a1 = ...; 
TruckLocation *a2 = ...; 

これは短く、より現代的な形ですが、あなたにそれを可変にする必要があり、いくつかのインスタンスを作成します。それは不変のインスタンスを作成します。

+0

私はmutableCopyメソッドについて理解していません。私はそれを見てきました。そしてそれはいとこです - 変更可能なオブジェクトの不変なコピー。複製の目的は何ですか?また、可変配列や辞書でそれが頻繁に見られるのはなぜですか? – noobsmcgoobs

+1

@noobsmcgoobsあなたが不変オブジェクトを持っていて、それを変更したい場合は、新しいオブジェクトを作成する必要があります。これは便利なメソッドでも、変更可能なコピーを作成して編集してもかまいません(通常、 。あなたはあなたが与えられた何かの記録を保持するために不変のコピーかもしれないし、あなたの背中の背中のオブジェクトを変更する誰かからあなた自身を守る... – Wain

6
NSMutableArray *array = [NSMutableArray alloc] init]; 
[array addObject:myObject]; 

ここで、myObjectはカスタムクラスのオブジェクトです。まあ

11

TruckLocation *truckLocationOne = [[TruckLocation alloc]initWithAnnotation:annotation 
      reuseIdentifier:annotationIdentifier]; 
truckLocationOne.name = @"name"; 

TruckLocation *truckLocationTwo = [[TruckLocation alloc]initWithAnnotation:annotation 
      reuseIdentifier:annotationIdentifier]; 
truckLocationTwo.name = @"name"; 

これらのオブジェクトは、次のように配列の一時に追加されます:

NSString *a = @"a"; 
NSMutableArray *array = [NSMutableArray arrayWithObjects:a,nil]; 
//or 
NSMutableArray *array = [[NSMutableArray alloc]init]; //alloc 

[array addObject:a]; 
0

はあなたがオブジェクトを初期化し、値に以下の方法を割り当てると仮定1) NSMutableArray temp = [[NSMtableArray alloc]initWithObjects:truckLocationOne,truckLocationTwo,nil];

2) NSMutableArray temp = [[NSMtableArray alloc]init]; [temp addObject:truckLocationOne]; [temp addObject:truckLocationTwo];

ホープこれはあなたのクエリあなたが初期化時にオブジェクトを追加することができ、この

NSMutableArray *annotationArray=[[NSMutableArray alloc]init]; 

     CLLocationCoordinate2D shopPosition = CLLocationCoordinate2DMake(allShopInfoObject.shopLatitudeValue, allShopInfoObject.shopLongitudeValue); 

    MapAnnotation *mapAnnotation = [[MapAnnotation alloc] initWithCoordinates:shopPosition andTitle:allShopInfoObject.shopName andShopId:allShopInfoObject.shopId subTitle:@""]; 

     [annotationArray addObject:mapAnnotation]; 
[self.mapView addAnnotations:annotationArray]; 
1

試してみてください何かを答えます。これにより、割り当てコード内にオブジェクトを追加することができます。 addObjectを使用して書き込みのステップ数を増やすこともできます。

0
TruckLocation *loc1=...; 
TruckLocation *loc2=...; 
NSMutableArray *truckArray=[[NSMutableArray alloc]initWithObjects:loc1,loc2]; 

LKE

関連する問題