Очень специфический вопрос, поэтому проводить исследования по нему довольно сложно.Мне это кажется довольно простым, но я делаю что-то не так и не вижу, что это такое.
Я создал следующий метод:
- (NSComparisonResult) searchBuildingObject:(NSDictionary *) building forString:(NSString *) searchString {
NSComparisonResult buildingComparison = [[building objectForKey:@"building"] compare:searchString
options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch)
range:NSMakeRange(0, [searchString length])];
if (buildingComparison != NSOrderedSame) {
for (NSString *alias in [building objectForKey:@"alias"]) {
NSComparisonResult aliasComparison = [alias compare:searchString
options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch)
range:NSMakeRange(0, [searchString length])];
if (aliasComparison == NSOrderedSame)
return aliasComparison;
}
}
return buildingComparison;
}
Кажется,работать нормально, даже когда я проверяю метод, он дает мне правильные результаты.Тем не менее, я по-прежнему получаю предупреждение при вызове метода:
[self searchBuildingObject:[self.buildings objectForKey:building] forString:searchText]
Я убедился, что building является NSDictionary, а searchString определенно является NSString.Результатом метода является NSComparisonResult, который я затем сравниваю с NSOrderedSame
NSComparisonResult result = [self searchBuildingObject:[self.buildings objectForKey:building] forString:searchText];
if (result == NSOrderedSame) NSLog(@"Same");
Предупреждение, которое я получаю: «BuildingsViewController может не отвечать на« -searchBuildingObject: forString: ». Кто-нибудь видит, что не так?