Мне недавно понадобилось что-то подобное. Я хотел разбить строку селектора (например: initWithFoo:bar:baz:
) на различные компоненты: (например: initWithFoo:
, bar:
и baz:
). Вы, как и я, обнаружили, что componentsSeparatedByString:
не совсем так. Поэтому я создал категорию NSString
, чтобы сделать то, что искал:
- (NSArray *) selectorComponents {
NSMutableArray * components = [NSMutableArray array];
NSMutableString * scratchString = [self mutableCopy];
while ([scratchString rangeOfString:@":"].location != NSNotFound) {
NSRange componentRange = NSMakeRange(0, [scratchString rangeOfString:@":"].location+1);
NSString * component = [scratchString substringWithRange:componentRange];
[components addObject:component];
[scratchString replaceCharactersInRange:componentRange withString:@""];
}
[scratchString release];
return components;
}
Вы захотите перейти с поиска @":"
на @"-"
, но после этого он должен работать так, как вы ожидаете.