2010-07-28 8 views
11

Tengo un NSArray de Foo objetos.Unir un NSArray de objetos en una cadena, pero es necesario que pueda especificar la propiedad

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

Quiero ser capaz de unirse a todos estos [Foo name] resultados en una sola NSString.

En C# Me gustaría obtener una gran variedad de éstos mediante el uso de LINQ, creando una matriz de ella, y alimentándolo a String.Join():

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

es algo como esto sea posible en Objective-C?

Sé acerca de [NSArray componentsJoinedByString], pero ¿cómo podría simplemente seleccionar fácilmente las propiedades [Foo name] de todos los objetos sin bucles manuales a través de su contenido?

Respuesta

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

(docs)

+0

Sí - aunque creo PO quiere que se unió por '@ " "' o '@","'. – bbum

+0

@bbum sí, acaba de ver y reparar – cobbal

+0

¿Sería técnicamente más lento que simplemente iterar la matriz y agregar la coma manualmente? Porque 'valueForKey' itera a través de la matriz completa una vez. Y luego supongo que 'componentsJoinedByString' hará otra iteración, por lo tanto, se hace dos veces. – pixelfreak

Cuestiones relacionadas