Поскольку вы ищете строку "beer and vodka" в строке "beer" - очевидно, что более длинная строка отсутствует в более короткой, поэтому вы получите ожидаемый результат.Что вам нужно, вероятно, должно быть наоборот:
NSRange range = [@"beer and vodka" rangeOfString:@"beer"];
if (range.location == NSNotFound)
{
NSLog(@"Why?");
}