Há também essa variante, se sua matriz original contiver objetos Key-Value a partir dos quais você deseja escolher apenas uma propriedade (que pode ser serializada como uma string):
@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
Há um vazamento de memória no seu código, mutableCopy retém o objeto que está copiando, portanto, você precisará retornar [res autorelease] no final. Além disso, não há razão para fazer uma cópia mutável em vez de apenas fazer uma sequência mutável logo de cara.
precisa saber é o seguinte
@thewormsterror: esqueceu de mencionar que este código era para o ARC. Além disso, a chamada mutablecopy é a convenção objetiva-c moderna para criar versão mutável de objetos usando a sintaxe @ (como [@ [] mutablecopy] para um nsarray mutável). não sei que diferença faz o desempenho ser sábio.
Respostas:
Este é o inverso de
-[NSString componentsSeparatedByString:]
.fonte
-componentsJoinedByString:
no NSArray deve fazer o truque.fonte
Há também essa variante, se sua matriz original contiver objetos Key-Value a partir dos quais você deseja escolher apenas uma propriedade (que pode ser serializada como uma string):
fonte