2010-02-05 10 views
7

NSArray öğesinin içeriğini NSMutable dizisine kopyalamam gerekiyor. Başka bir deyişle, arrayCountryChoices dizisini arraySearchResults'a kopyalamak istiyorum. Herhangi bir fikir????iPhone SDK: NSArray içeriğini NSMutable dizisine kopyalamak nasıl?

//main data 
NSArray *arrayCountryChoices; 

//search results buffer 
NSMutableArray *arraySearchResults; 


//create data 
arrayCountryChoices = [[NSArray alloc] initWithObjects:@"foo",@"bar",@"baz",nil]; 

//copy the original array to searchable array ->> THIS IS NOT WORKING AS EXPECTED 
arraySearchResults = [[NSMutableArray alloc] arrayWithArray:arrayCountryChoices]; 

Şimdiden teşekkürler.

cevap

23

öyle ya

[NSMutableArray arrayWithArray:anArray]; 

veya

[[NSMutableArray alloc] initWithArray:anArray]; 

veya

[anArray mutableCopy]; 

Eğer NSMutableArray örneğinde arrayWithArray diyoruz çünkü örnekteki kod çalışmaz, ancak arrayWithArray bir sınıf yöntemidir.

Genel kural olarak, init ile başlayan initalizasyon yöntemleri örnek yöntemlerdir ve sınıfın adıyla başlayanlar (array, vb) sınıf yöntemleridir. Sınıf yöntemleri otomatikleştirilmiş nesneleri döndürürken, örnek yöntemler saklanan nesneleri döndürür.

+0

// orijinal diziyi aranabilir diziye kopyalayın \t arraySearchResults = [[NSMutableArray alloc] initWithArray: arrayCountryChoices]; Bir şampiyon gibi çalıştım. Teşekkürler. – user265550

+0

rica ederim. –

+0

Aşağıdakilerden hangisi daha verimli? – FreeAsInBeer

0

Çalışmıyor çünkü arrayWithArray örnek yöntem değil, bir sınıf yöntemidir.

Gereksinim duyduğunuz her şeyi [NSMutableArray arrayWithArray:arrayCountryChoices] yapabilirsiniz.

arrayCountryChoices içeriğiyle yeni bir değiştirilebilen dizi döndürmek için [arrayCountryChoices mutableCopy] numaralı telefonu arayabilirsiniz.

2

kullanırken lütfen unutmayın boş değişken dizi oluşturmak ve -addObjectsFromArray yöntemini kullanarak kendisine nesneleri ekleyebilirsiniz:

[NSMutableArray arrayWithArray:anArray]; 

veya

her zaman bir
[[NSMutableArray alloc] initWithArray:anArray]; 

alırsınız dizisi bir null olsa bile dizisi:

[anArray mutableCopy]; 
BirArray öğesinin nil olması durumunda, nil alırsınız

. Yani, boş olsa bile bir dizi aldığınızdan emin olmak istiyorsanız, eski yöntemleri kullanın.