2013-09-03 20 views
7

Obj C'ye yeni giriyorum ve bir dizi MKAnnotation oluşturmaya çalışıyorum.NSMutableArray nasıl oluşturulur ve buna belirli bir nesne nasıl atanır?

Zaten adı, açıklaması, enlem ve boylamı içeren TruckLocation adlı MKAnnotation sınıfını oluşturdum. İşte

Ben dizide için bugüne kadar ne var: benzer, ancak farklı şeyler için 2 farklı sözdizimi birleştirmeye çalışıyor

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

cevap

16

Yore. Ayrıca, ek açıklamalarınızın herhangi bir örneğini de görmüyorsunuz.

bazı örneklerini oluşturun

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

Sonra onlara

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

Ya

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

Bu kısa ve daha modern şeklidir ekleyebilirsiniz ancak gibi kesilebilir yapmak gerekir değişmez bir örnek oluşturacaktır.

+0

mutableCopy yöntemini anlamıyorum. Onu etrafta gördüm ve kuzen - değişken bir nesnenin değişmez kopyası. Kopyalamanın amacı nedir ve neden sıklıkla değişken diziler ve sözlükler ile görülüyor? – noobsmcgoobs

+1

@noobsmcgoobs, eğer değişmez bir nesneye sahipseniz ve bunu değiştirmek istiyorsanız, yeni bir nesne oluşturmanız gerekir. Bu, kolaylık yöntemiyle veya değiştirilebilen bir kopya oluşturarak ve düzenleyerek (genellikle birden çok değişiklik yapmak istiyorsanız) yeni bir nesne oluşturmanız gerekir. . Verdiğiniz bir şeyin kaydını tutmak ve bu nesneyi arkanızda değiştiren birine karşı kendinizi korumak için kopyalayamazsınız ... – Wain

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

myObject, özel sınıfınızın nesnesidir. Eh

11

:

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

[array addObject:a]; 
0

nesneleri başlatmak ve değerler aşağıdaki şekilde atamak varsayalım:

:

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

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

Bu nesneler

şu şekilde dizi sıcaklığına kadar eklenebilir 1) NSMutableArray temp = [[NSMtableArray alloc]initWithObjects:truckLocationOne,truckLocationTwo,nil];

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

Umut bu sorgu başlatma sırasında nesneleri ekleyebilir bu

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

deneyin şey yanıtlar. Bu şekilde tahsis kodu içinde nesne ekleyebilirsiniz. Ayrıca addObject ile yazmak için daha fazla adımdan kaçınabilirsiniz.

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

lke

İlgili konular