私はObj Cに入ったばかりで、MKAnnotationsの配列を作成しようとしています。
名前、説明、緯度、経度を含むTruckLocation
というMKAnnotationクラスをすでに作成しています。
これが私がこれまでに配列に対して持っているものです:
NSMutableArray* trucksArray =[NSMutableArray arrayWithObjects: @[<#objects, ...#>] nil];
似ているが異なるものに対して2つの異なる構文を組み合わせようとしている。また、アノテーションのインスタンスがないようです。
いくつかのインスタンスを作成する
TruckLocation *a1 = ...;
TruckLocation *a2 = ...;
次に、それらを追加できます
NSMutableArray *trucksArray = [NSMutableArray arrayWithObjects:a1, a2, nil];
または
NSMutableArray *trucksArray = [@[a1, a2] mutableCopy]
これはより短くよりモダンな形式ですが、不変のインスタンスを作成するため、変更可能にする必要があります。
上手:
NSString *a = @"a";
NSMutableArray *array = [NSMutableArray arrayWithObjects:a,nil];
//or
NSMutableArray *array = [[NSMutableArray alloc]init]; //alloc
[array addObject:a];
NSMutableArray *array = [NSMutableArray alloc] init];
[array addObject:myObject];
ここで、myObjectはカスタムクラスのオブジェクトです。
このようなものを試してください
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];
次の方法でオブジェクトを初期化し、値を割り当てるとします。
TruckLocation *truckLocationOne = [[TruckLocation alloc]initWithAnnotation:annotation
reuseIdentifier:annotationIdentifier];
truckLocationOne.name = @"name";
TruckLocation *truckLocationTwo = [[TruckLocation alloc]initWithAnnotation:annotation
reuseIdentifier:annotationIdentifier];
truckLocationTwo.name = @"name";
これらのオブジェクトは、次の方法で配列tempに追加されます。
1)NSMutableArray temp = [[NSMtableArray alloc]initWithObjects:truckLocationOne,truckLocationTwo,nil];
2)NSMutableArray temp = [[NSMtableArray alloc]init]; [temp addObject:truckLocationOne]; [temp addObject:truckLocationTwo];
これがあなたの質問に答えることを願っています
TruckLocation *loc1=...;
TruckLocation *loc2=...;
NSMutableArray *truckArray=[[NSMutableArray alloc]initWithObjects:loc1,loc2];
初期化時にオブジェクトを追加できます。これにより、割り当てコード内にオブジェクトを追加できます。また、addObject
を使用して書き込むためのステップ数を増やす必要がなくなります。