【问题标题】:sorting of an array alphabetically in objective-c [duplicate]在objective-c中按字母顺序对数组进行排序[重复]
【发布时间】:2013-02-03 15:46:44
【问题描述】:

我想在 Objective-c 中按字母顺序对数组进行排序。我是这样实现的。

//Sorting of the Array
NSArray *sortedArray = [arrName sortedArrayUsingComparator:^(Cars *firstObject, Cars *secondObject) {
    return [firstObject.str_name compare:secondObject.str_name];
}];
arrName =[NSMutableArray arrayWithArray:sortedArray];

问题是出现的所有数字后跟大写字母单词后跟小写字母项目...

我希望它按字母顺序显示-> 意思是说大写字母和小写字母可能混合在一起。

【问题讨论】:

    标签: ios objective-c cocoa-touch


    【解决方案1】:

    compare: 替换为caseInsensitiveCompare:

    由于arrName 是可变的,请改用“sortUsingComparator”方法。它将在不创建新数组的情况下对可变数组进行排序。

    [arrName sortUsingComparator:^(Cars *firstObject, Cars *secondObject) {
        return [firstObject.str_name caseInsensitiveCompare:secondObject.str_name];
    }];
    

    【讨论】:

    • 那我可以说 sortedArray 必须成为 NSMutableArray 类型吗?
    • 不,你不需要sortedArray
    • 我做对了吗?
    • 差不多。查看我的更新。
    • 如果有人使用拉丁语以外的字符集,他们应该使用比较器:localizedCaseInsensitiveCompare
    【解决方案2】:

    试试这个,

    NSArray *array=[[NSArray alloc]initWithObjects:@"Object1",@"object1", nil];      
    array =[array sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
    NSLog(@"%@",array);
    

    【讨论】:

    • 这行不通。它不是一个字符串数组,它是一个对象数组,并且排序是基于对象的一个​​属性。
    猜你喜欢
    • 2013-11-02
    • 2013-05-14
    • 2014-05-14
    • 2011-10-06
    • 2012-12-06
    • 1970-01-01
    • 2017-11-04
    相关资源
    最近更新 更多