2010-01-14 14 views
5

Bir NSArrayController'ım var ve selectedObjects değerini aldığımda ve valueForKey:@"Name" değeriyle bir NSString oluşturduğundaNSArray öğesinden dize değeri alma

(
    "This is still a work in progress " 
) 

döndürdüğümde tek istediğim ""'deki metin nasıl elde edebilirim? Ayrıca, bu benim kodum:

NSArray *arrayWithSelectedObjects = [[NSArray alloc] initWithArray:[arrayController selectedObjects]]; 

NSString *nameFromArray = [NSString stringWithFormat:@"%@", [arrayWithSelectedObjects valueForKey:@"Name"]]; 
NSLog(@"%@", nameFromArray); 

Düzenleme:

dizisinde başka dizeler de var

cevap

16

bir dizi valueForKey: diyoruz, dizide yer alan unsurların her biri üzerinde valueForKey: çağırır diğer dizeleri var ve nil değerleri için NSNull yerine yeni bir dizide bu değerleri döndürür. Ayrıca dizisini denetleyiciden çoğaltmaya gerek yoktur, çünkü yine de değişmezdir. Eğer dizi kontrolörün seçilen nesnelerin birden fazla nesneyi varsa ve seçilen nesnelerin tüm öğelerin adı anahtarının değerini görmek istiyorsanız

, basitçe yapmak: Elbette


NSArray *names = [[arrayController selectedObjects] valueForKey:@"name"]; 

for (id name in names) 
    NSLog (@"%@", name); 

, yapabilirsin Bilseydin hepsini birden yazdırmak:

NSLog (@"%@", [[arrayController selectedObjects] valueForKey:@"name"]); 

orada selectedObjects dizideki tek unsur, ve sen valueForKey: ararsanız, yine bir dizi döndürür, ancak yalnızca bir anahtarın değerini içerecektir yalnız öğe dizi. Bunu lastObject ile referansta bulabilirsiniz.

NSString *theName = [[[arrayController selectedObjects] valueForKey:@"name"] lastObject]; 
NSLog (@"%@", theName);