stringByReplacingOccurrencesOfString
ничего не делает, когда вы передаете пустую строку "", поэтому string2
является идентичной копией string1
, следовательно, запятые отсутствуют, и операция разбиения завершается неудачей.
Есть много способов сделать это. Я могу думать о двух:
Преобразовать в массив символов:
NSString *string = @"Hello";
const char *characters = [string UTF8String];
for(int i=0; i<sizeof(characters); i++) {
NSLog(@"%c", characters[i]);
}
Или, если вы хотите иметь дело только с объектами, переберите каждый метод и создайте вручную массив:
NSString *string = @"Hello";
NSMutableArray *array = [[NSMutableArray alloc] init];
for(int i = 0; i < [string length]; i++) {
NSString *myChar = [NSString stringWithFormat:@"%c", [string characterAtIndex:i]];
[array addObject:myChar];
}
Вы можете добавить приведенную выше логику к методу, подобному toArray
, в качестве категории в самой NSString, поэтому все строки получают эту функциональность, если это распространенный случай для вашего приложения. Оформите эту статью для получения дополнительной информации о категориях. Вы бы просто позвонили [someString toArray]
, чтобы получить представление массива.