Другим решением будет сортировка вручную после получения результатов:
[tracks sortUsingComparator:^NSComparisonResult(id obj1, id obj2)
{
NSError *error = nil;
NSString *pattern = @"[^A-Za-z0-9]";
NSRegularExpression *expr = [NSRegularExpression regularExpressionWithPattern:pattern
options:NSRegularExpressionCaseInsensitive
error:&error];
NSString *title1 = [(Track *)obj1 title];
NSString *title2 = [(Track *)obj2 title];
NSString *title1Match = [expr stringByReplacingMatchesInString:title1
options:0
range:NSMakeRange(0, [title1 length])
withTemplate:@""];
NSString *title2Match = [expr stringByReplacingMatchesInString:title2
options:0
range:NSMakeRange(0, [title2 length])
withTemplate:@""];
return [title1Match compare:title2Match options:NSCaseInsensitiveSearch];
}];
Я также использовал [\ W] в качестве шаблона, но мне показалось, что это был огромный удар по производительности.