为了账号安全,请及时绑定邮箱和手机立即绑定

如何按字母顺序对NSArray进行排序?

如何按字母顺序对NSArray进行排序?

函数式编程 2019-07-12 16:40:34
如何按字母顺序对NSArray进行排序?如何对填充了[UIFont familyNames]按字母顺序?
查看完整描述

3 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

最简单的方法是提供一个排序选择器(苹果的文档详情)

目标-C

sortedArray = [anArray sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];

斯威夫特

let descriptor: NSSortDescriptor = NSSortDescriptor(key: "YourKey", ascending: true, selector: "localizedCaseInsensitiveCompare:")
let sortedResults: NSArray = temparray.sortedArrayUsingDescriptors([descriptor])

Apple为字母排序提供了几个选择器:

  • compare:

  • caseInsensitiveCompare:

  • localizedCompare:

  • localizedCaseInsensitiveCompare:

  • localizedStandardCompare:

斯威夫特

var students = ["Kofi", "Abena", "Peter", "Kweku", "Akosua"]students.sort()print(students)// Prints "["Abena", "Akosua", "Kofi",
 "Kweku", "Peter"]"

参照系


查看完整回答
反对 回复 2019-07-12
?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

这里提供的其他答案提到@selector(localizedCaseInsensitiveCompare:)这对于NSString数组非常有用,但是如果您想将其扩展到另一种类型的对象,并根据“名称”属性对这些对象进行排序,则应该这样做:

NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
sortedArray=[anArray sortedArrayUsingDescriptors:@[sort]];

您的对象将根据这些对象的name属性进行排序。

如果希望排序不区分大小写,则需要像下面这样设置描述符

NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES selector:@selector(caseInsensitiveCompare:)];



查看完整回答
反对 回复 2019-07-12
?
慕哥9229398

TA贡献1877条经验 获得超6个赞

对NSString列表进行排序的一种更强大的方法是使用诸如NSNDigicSearch这样的内容:

NSArray *sortedArrayOfString = [arrayOfString sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
            return [(NSString *)obj1 compare:(NSString *)obj2 options:NSNumericSearch];
        }];

与SortDescriptor相结合,这将提供如下内容:

NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES comparator:^NSComparisonResult(id obj1, id obj2) {
        return [(NSString *)obj1 compare:(NSString *)obj2 options:NSNumericSearch];
    }];NSArray *sortedArray = [anArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:sort]];



查看完整回答
反对 回复 2019-07-12
  • 3 回答
  • 0 关注
  • 1007 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信