2013-09-03 18 views
7

Sto per entrare in Obj C e sto cercando di creare una serie di MKAnnotations.Come creare un NSMutableArray e assegnargli un oggetto specifico?

Ho già creato la classe MKAnnotation denominata TruckLocation che contiene il nome, la descrizione, la latitudine e la longitudine.

Ecco quello che ho finora per l'array:

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

risposta

16

Yore cercando di coniugare 2 sintassi differenti per cose simili, ma diverse. Inoltre, non sembra che ci siano istanze delle tue annotazioni.

Creare alcuni casi

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

Poi possiamo aggiungere loro

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

O

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

Questa è una forma più breve e più moderno, ma è necessario rendere mutabile come creerà un'istanza immutabile.

+0

Non capisco il metodo mutableCopy. L'ho visto in giro ed è un cugino, la copia immutabile di un oggetto mutevole. qual è lo scopo della copia e perché è così spesso visto con matrici e dizionari mutabili? – noobsmcgoobs

+1

@noobsmcgoobs se si dispone di un oggetto immutabile e si desidera modificarlo è necessario creare un nuovo oggetto, che può essere sia con un metodo comodo o effettuando una copia mutevole e modificandolo (in genere se si desidera apportare più modifiche) . Potresti copiare immutabilmente per tenere traccia di qualcosa che ti è stato dato e proteggerti da qualcuno che cambia quell'oggetto dietro la schiena ... – Wain

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

Dove myObject è l'oggetto della classe personalizzata.

11

Bene:

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

[array addObject:a]; 
0

Supponiamo si inizializza gli oggetti e di assegnare i valori nel seguente modo:

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

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

Questi oggetti sarebbe aggiunto alla temperatura di matrice nel modo seguente:

1) NSMutableArray temp = [[NSMtableArray alloc]initWithObjects:truckLocationOne,truckLocationTwo,nil];

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

Spero che questo risponde alla tua domanda

1

Provare qualcosa lke questo

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]; 
0
TruckLocation *loc1=...; 
TruckLocation *loc2=...; 
NSMutableArray *truckArray=[[NSMutableArray alloc]initWithObjects:loc1,loc2]; 

è possibile aggiungere oggetti al momento dell'inizializzazione. da questo è possibile aggiungere oggetti all'interno del codice di allocazione. inoltre è possibile evitare un numero maggiore di passaggi per la scrittura con addObject.