iphone – 使用数字字符串对数组进行排序

你好,我有一个人的数组,我试图按年龄使用排序描述符对它们进行排序.

患者的年龄字段是字符串,因此在致电时:

ageSorter = [[NSSortDescriptor alloc] initWithKey:@"age" ascending:YES];
[personList sortUsingDescriptors:[NSArray arrayWithObject:ageSorter]];

它对它们进行排序,但首先出现100,因为它在比较选项中没有使用numericSearch.

有没有一种方法我仍然可以使用描述符排序,但可能使用选择器来更改如何比较字符串?

最佳答案 finderSortWithLocale方法(这些都来自apple api):

int finderSortWithLocale(Person *person1, Person *person2, void *locale)
{
    static NSStringCompareOptions comparisonOptions = NSNumericSearch;

    NSRange string1Range = NSMakeRange(0, [string1 length]);
    NSString *age1 = person1.age;
    NSString *age2 = person2.age;
    return [age1 compare:age2
                    options:comparisonOptions
                    range:string1Range
                    locale:(NSLocale *)locale];
}

如何调用此方法(编辑:调用人员数组上的函数):

    NSArray *sortedArray = [personList sortedArrayUsingFunction:finderSortWithLocale
                                         context:[NSLocale currentLocale]];
点赞