2010-07-28 3 views
11

J'ai un NSArray de Foo objets.Rejoindre un objet NSArray dans une chaîne, mais doit pouvoir spécifier la propriété

@interface Foo : NSObject 
{ 
} 
- (NSString *) name; 
@end 

Je veux être en mesure de rejoindre tous ces [Foo name] résultats en un seul NSString.

En C# Je voudrais obtenir un tableau de ceux-ci en utilisant LINQ, la création d'un tableau de celui-ci, et l'alimentation à String.Join():

List<Foo> foo = [..]; 
String.Join(",", foo.select(F => F.name()).ToArray()); 

est quelque chose comme cela possible en Objective-C?

Je connais environ [NSArray componentsJoinedByString], mais comment choisir facilement les propriétés [Foo name] de tous les objets sans boucler manuellement son contenu?

Répondre

35
[[myArray valueForKey:@"name"] componentsJoinedByString:@","] 

(docs)

+0

Eh oui - mais je crois que l'OP veut rejointe par '@ " "' ou '@","'. – bbum

+0

@bbum yep, juste vu et corrigé – cobbal

+0

Serait-ce techniquement plus lent que d'itérer le tableau et d'ajouter la virgule manuellement? Parce que 'valueForKey' parcourt une fois le tableau entier. Et puis je suppose que 'componentsJoinedByString' fera une autre itération, donc c'est fait deux fois. – pixelfreak

Questions connexes