También existe esta variante, si su matriz original contiene objetos de valor clave de los que solo desea elegir una propiedad (que se puede serializar como una cadena):
@implementationNSArray(itertools)-(NSMutableString*)stringByJoiningOnProperty:(NSString*)property separator:(NSString*)separator
{NSMutableString*res =[@"" mutableCopy];
BOOL firstTime = YES;for(NSObject*obj in self){if(!firstTime){[res appendString:separator];}else{
firstTime = NO;}
id val =[obj valueForKey:property];if([val isKindOfClass:[NSStringclass]]){[res appendString:val];}else{[res appendString:[val stringValue]];}}return res;}@end
Hay una pérdida de memoria en su código, mutableCopy retiene el objeto que está copiando, por lo tanto, deberá devolver [liberación automática] al final. Además, no hay razón para hacer una mutablecopy en lugar de hacer una sarta mutable directamente desde el principio.
thewormsterror
@thewormsterror: olvidé mencionar que este código era para ARC. Además, la llamada mutablecopy es la convención moderna del objetivo c para crear una versión mutable de objetos usando @ -syntax (como [@ [] mutablecopy] para un nsarray mutable). No sé qué diferencia hace que el rendimiento sea inteligente.
Respuestas:
Esta es la inversa de
-[NSString componentsSeparatedByString:]
.fuente
-componentsJoinedByString:
en NSArray debería hacer el truco.fuente
También existe esta variante, si su matriz original contiene objetos de valor clave de los que solo desea elegir una propiedad (que se puede serializar como una cadena):
fuente