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

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

如何对填充了[UIFont familyNames]按字母顺序?



函数式编程
浏览 1046回答 3
3回答

Qyouu

最简单的方法是提供一个排序选择器(苹果的文档详情)目标-CsortedArray = [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"]"参照系

翻翻过去那场雪

这里提供的其他答案提到@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:)];

慕哥9229398

对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]];
打开App,查看更多内容
随时随地看视频慕课网APP