Если все, что вы хотите сделать, это убрать пробелы из строки, подумайте:
_foo2 = [foo stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
// or whitespaceAndNewlineCharacterSet, if that fits your use case better
Если вы хотите быть более конкретным, есть:
_foo2 = [foo stringByReplacingOccurrencesOfString:@" " withString:@""];
Или, чтобы более внимательно следить за семантикой того, что вы делаете, есть:
NSArray *fooArray = [foo componentsSeparatedByString:@" "];
_foo2 = [fooArray componentsJoinedByString:@""];
И если по какой-то причине вы действительно хотите пройтись по нему (возможно, выполнить некоторую обработку каждого слова?), Есть несколько способов сделать это:
NSArray *fooArray = [foo componentsSeparatedByString:@" "];
_foo2 = [NSMutableString string];
for (int i = 0; i < fooArray.count; i++) {
[_foo2 appendString:[fooArray objectAtIndex:i]];
}
Или:
NSArray *fooArray = [foo componentsSeparatedByString:@" "];
_foo2 = @""; // equivalent to [NSString string]
for (int i = 0; i < fooArray.count; i++) {
_foo2 = [_foo2 stringByAppendingString:[fooArray objectAtIndex:i]];
}
(И это даже не учитывая быстрое перечисление, то есть конструкция for..in
.) Первый цикл, вероятно, более эффективен, поскольку я думаю, что многократное добавление к одной и той же NSMutableString обходится дешевле, чем создание новых строк и бросание старых по ходу работы. вместе.