Также существует этот вариант, если ваш исходный массив содержит объекты Key-Value, из которых вы хотите выбрать только одно свойство (которое может быть сериализовано в виде строки):
@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
В вашем коде есть утечка памяти, mutableCopy сохраняет объект, который копирует, поэтому вам нужно будет сделать return [res autorelease] в конце. Также нет причин делать изменяемую копию вместо того, чтобы сразу же создавать изменяемую строку.
thewormsterror
@thewormsterror: забыл упомянуть, что этот код был для ARC. Кроме того, вызов mutablecopy - это современное соглашение objective-c для создания изменяемой версии объектов с использованием @ -синтаксиса (например, [@ [] mutablecopy] для изменяемого массива nsarray). не знаю, какая разница в производительности.
Ответы:
Это обратное
-[NSString componentsSeparatedByString:]
.источник
-componentsJoinedByString:
на NSArray должно помочь.источник
Также существует этот вариант, если ваш исходный массив содержит объекты Key-Value, из которых вы хотите выбрать только одно свойство (которое может быть сериализовано в виде строки):
источник