iphone - 使用比较 : selector 比较数组中的 float

标签 iphone ios cocoa

我有一个应用程序,它从服务器检索大量数值数据并将其保存到 NSMUtableArray 中。现在这些值是 float ,看起来像 10.0; 11.2; 30.003; 109.23等

现在我使用 sortUsingSelector(@selector(compare:)) 方法对我的数组进行排序以找到最大值和最小值。我的输出如下:

10.0 109.23 11.2 30.003

现在我假设比较:选择器将值视为字符串并相应地对它们进行排序。但这不是我想要的。我希望根据浮点值对值进行排序。 所以我的问题是:有什么方法可以根据数值对 float 数组进行排序吗?

最佳答案

比较可能有一个捷径,并且没有错误检查,但像这样的事情应该可以解决问题:

NSArray* sorted = [unsorted sortedArrayWithOptions:0 usingComparator:^(id v1, id v2) {
  float f1 = [v1 floatValue];
  float f2 = [v2 floatValue];

  if (f1 == f2) return NSOrderedSame;
  return (f1 < f2) ? NSOrderedAscending : NSOrderedDescending;
}];

或者您可以在值传入时将其存储为 NSNumber

关于iphone - 使用比较 : selector 比较数组中的 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7972375/

相关文章:

ios - Swift xcode 错误 : load controller is not allowed and autoresize not equal to views window

objective-c - Mac 上 plist 文件中的 MS Word 2011 自定义词典项目格式

iphone - 身份验证挑战

iPhone OSC 库

ios - 在所有应用程序界面 swift2 中保持像页脚一样的底部 View

iphone - 在iOS上,使用NSURLConnection时如何缓存更大的文件(1MB)?

ios - 如何更改 NSAttributedString 中的 "\t"长度?

ios - React 原生链接弹出

objective-c - 如何静态转储 Cocoa App 中调用的所有 ObjC 方法?

objective-c - 如何强制重绘 NSScrollView 内的内容