Does a NSString contain a substring?

Here is a little tip on how to tell if a string contains another string, using the underused data type NSRange.

NSRange gives the starting location and the length of a given value, and is often used with arrays and strings. On this occasion we will use it to find the range of a substring within another string. If the range has a location, it contains the given substring. The following code does just that.

NSRange textRange = [string rangeOfString:substring];

if (textRange.location != NSNotFound) {
    // Does contain the substring
}

Making this a case insensitive compare is also very trivial, and can be done by lowercasing both strings

NSRange textRange = [[string lowercaseString] rangeOfString:[substring lowercaseString]];

if (textRange.location != NSNotFound) {
    // Does contain the substring
}