IOS/Objective-C: найти индекс слова в строке

Я пытаюсь вернуть индекс слова в строке, но не могу найти способ обработки случая, когда оно не найдено. Следующее не работает, потому что nil не работает. Перепробовали все комбинации int, NSInteger, NSUInteger и т. д., но не смогли найти ни одной, совместимой с nil. Есть какой-либо способ сделать это? Спасибо за

-(NSUInteger) findIndexOfWord: (NSString*) word inString: (NSString*) string {
    NSArray *substrings = [string componentsSeparatedByString:@" "];

    if([substrings containsObject:word]) {
        int index = [substrings indexOfObject: word];
        return index;
    } else {
        NSLog(@"not found");
        return nil;
    }
}

person zztop    schedule 24.04.2017    source источник
comment
Просто посмотрите документацию developer.apple.com/reference/foundation/nsarray/: Если ни один из объектов в массиве не равен объекту, возвращает NSNotFound.   -  person Martin R    schedule 24.04.2017


Ответы (1)


Используйте NSNotFound, что indexOfObject: вернет, если word не будет найдено в substrings.

- (NSUInteger)findIndexOfWord:(NSString *)word inString:(NSString *)string {
    NSArray *substrings = [string componentsSeparatedByString:@" "];

    if ([substrings containsObject:word]) {
        int index = [substrings indexOfObject:word];
        return index; // Will be NSNotFound if "word" not found
    } else {
        NSLog(@"not found");
        return NSNotFound;
    }
}

Теперь, когда вы вызываете findIndexOfWord:inString:, проверьте результат для NSNotFound, чтобы определить, удалось это или нет.

Ваш код на самом деле может быть написан намного проще:

- (NSUInteger)findIndexOfWord:(NSString *)word inString:(NSString *)string {
    NSArray *substrings = [string componentsSeparatedByString:@" "];

    return [substrings indexOfObject: word];
}
person rmaddy    schedule 24.04.2017