Просто добавим несколько дополнений к ответу Николая:
NSOrderedSame
определяется как 0
typedef NS_ENUM(NSInteger, NSComparisonResult) {NSOrderedAscending = -1L, NSOrderedSame, NSOrderedDescending};
Так что если вы вызовете caseInsensitiveCompare:
для объекта nil
, выполучить nil
.Затем вы сравниваете nil
с NSOrderSame
(что равно 0), вы получите совпадение, что, конечно, неправильно.
Также вам нужно проверить, должен ли параметр, переданный в caseInsensitiveCompare:
, быть не нулевым.Из документации :
Это значение не должно быть равно нулю.Если это значение равно nil, поведение не определено и может измениться в будущих версиях OS X.