【问题标题】:Objective-C: I want to compare / sort arrays in blocksObjective-C:我想比较/排序块中的数组
【发布时间】:2018-05-28 08:45:52
【问题描述】:

在对字符串数组进行排序时,我了解到使用以下代码可以轻松完成排序。

arr = [arr sortedArrayUsingSelector: @selector (localizedStandardCompare :)];

但是,这次我想重新排列自定义类的实例。 * 字符串信息可以从自定义类的实例方法中获取。

因此,通过使用以下块排序返回 NSComparisonResult 我以为我可以重新排列自定义类的实例,但是 它没有像我预期的那样移动。

- (NSArray <ObjectType> *) sortedArrayUsingComparator: (NSComparator) cmptr;

如果你明白,请告诉我。 谢谢。

【问题讨论】:

  • 编辑您的问题并包含cmptr 及其使用的任何内容的详细信息。在不知道您的比较器是什么的情况下,人们无法帮助您解决“它没有像我预期的那样移动”的问题。
  • [array sortedArrayUsingComparator:^NSComparisonResult(CustomClass *item1, CustomClass *item2) {
  • 重要的是订购@selector (localizedStandardCompare:)!
  • 不幸的是,您的 cmets 添加的信息很少。您需要编辑问题(查看标签下方的左下角,您可以看到share edit close flag,请按edit)添加完整块、使用的CustomClass 属性的详细信息、获得的顺序和顺序你期待。

标签: ios objective-c xcode sorting block


【解决方案1】:
NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"Your Key" ascending:NO];
  NSArray *sortedArray=[yourArrayName sortedArrayUsingDescriptors:@[sort]];

【讨论】:

  • 最好在答案中添加一些解释,让人们了解他们将要做什么
  • 重要的是订购@selector(localizedStandardCompare:)!
  • NSPredicate *p1 = [NSPredicate predicateWithFormat:@"yourkey contains[c] %@",sortingCharacter]; NSMutableArray *sortedArray = [NSMutableArray arrayWithArray:[yourArray filteredArrayUsingPredicate:p1]];请使用不区分大小写的比较和排序代码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-17
  • 2021-02-10
  • 1970-01-01
相关资源
最近更新 更多