2013-09-03 31 views

Odpowiedz

16

Yore próbuje połączyć 2 różne składnie dla podobnych, ale różnych rzeczy. Wydaje się również, że nie masz żadnych adnotacji.

Tworzenie pewne instancje

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

Następnie możemy dodać do nich

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

Or

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

ten jest krótszy i bardziej nowoczesna forma, ale trzeba zrobić to zmienne jako stworzy niezmienną instancję.

+0

Nie rozumiem metody mutableCopy. Widziałem to i to kuzyn - niezmienna kopia zmiennego obiektu. jaki jest cel kopiowania i dlaczego tak często widuje się go z tablicami i słownikami, które można modyfikować? – noobsmcgoobs

+1

@noobsmcgoobs, jeśli masz niezmienny obiekt i chcesz go zmodyfikować, musisz utworzyć nowy obiekt, który może być albo metodą wygodną, ​​albo wykonując zmienną i edytowalną kopię (zwykle jeśli chcesz dokonać wielu modyfikacji) . Możesz mieć niezmienny egzemplarz, aby zachować zapis czegoś, co otrzymałeś i chronić się przed kimś, kto zmienia ten obiekt za plecami ... – Wain

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

Gdzie myObject jest obiektem twojej niestandardowej klasy.

11

Well:

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

[array addObject:a]; 
0

Załóżmy inicjowania obiektów i przypisać wartości w następujący sposób:

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

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

Obiekty te zostaną dodane do temp tablicy w następujący sposób:

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

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

Nadzieja ta odpowiada na zapytanie

1

spróbować czegoś LKE tym

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]; 

można dodawać obiekty w czasie inicjalizacji. dzięki temu można dodawać obiekty w ramach kodu przydziału. również możesz uniknąć większej liczby kroków do pisania przy pomocy addObject.