Objective-C,对包含数字的字符串数组进行排序[重复]

2023-11-27

假设我有一个像这样的数组

NSArray* arr = @[@"1",@"4",@"2",@"8",@"11",@"10",@"14",@"9"]; //note: strings containing numbers

我想像这样对它们进行排序:[1,2,4,8,9,10,11,14]

但如果我用

[arr sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];

我得到 [1,10,11,14,2,4,8,9]... 如果我使用:

   NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"length" ascending:YES];
   NSArray *sortDescriptors = @[sortDescriptor];
   [arr sortedArrayUsingDescriptors:sortDescriptors];

我得到这样的东西:[1,4,2,8,9,11,10,14]

如何组合这两个谓词?或者有其他更简单的方法来解决这个问题吗?注意:该数组的输出仅用于调试目的,我不在乎结果是否将数组转换为整数,只要我可以使用 NSLog 在控制台中打印即可,谢谢


尝试使用块

[arr sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {

    if ([obj1 intValue] == [obj2 intValue])
        return NSOrderedSame;

    else if ([obj1 intValue] < [obj2 intValue])
        return NSOrderedAscending;

    else
        return NSOrderedDescending;

}];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Objective-C,对包含数字的字符串数组进行排序[重复] 的相关文章

随机推荐

  • Rcpparmadillo:无法调用 Fortran 例程“dgebal”?

    我需要使用一个名为的 Fortran 例程dgebal 文档here 在我的 Rcpparmadillo 代码中 我已包含以下标题 include
  • MySQL 中两个日期时间之间的减号运算符的行为是什么?

    到 日期时间之间的差异是它们之间的秒数 这似乎仅在日期时间发生在同一小时内时才有效 为什么是这样 mysql gt update events set created at 2011 04 13 15 59 59 fulfilled at
  • C++11 和 C++03 之间的库兼容性

    我正在使用 g 4 7 和 std c 0x 在 C 11 中开发应用程序 我的应用程序链接到一些使用 g 4 7 编译的共享库 但没有 std c 0x 指令 不幸的是 没有任何作用 这意味着我在使用外部库类和方法时有一些奇怪的行为 当然
  • 如何获得触发器来根据 DataContext 属性更改 TextBlock 的颜色?

    为什么以下代码会出现运行时错误 Triggers 集合的成员必须是 EventTrigger 类型 但 EventTrigger 元素没有 Binding 属性 那么如何根据 DataContext 属性更改 TextBlock 的颜色呢
  • 在javascript中获取div的高度

    我有一个 div css div width 200px height auto markup div Text is editable div 现在我应该做什么来访问height numeric value 上面的div在javascri
  • RESTful HTTP 响应代码

    我正在开发一个简单的 RESTful API 并且非常喜欢它的简约风格 但我不确定各种情况下正确的 HTTP 响应代码 查询格式不正确 正确形成的查询引用了不存在的资源 资源已成功删除 资源编辑成功 我目前认为 1 会是403 Forbid
  • 在 numpy 数组求和中将 nan 视为零,除了所有数组中的 nan

    我有两个 numpy 数组 NS EW 来总结 他们每个人在不同的位置都有缺失值 比如 NS array 1 2 nan 4 5 nan 6 nan nan EW array 1 2 nan 4 nan nan 6 nan 9 如何以 nu
  • 如何将集合分成批次?

    我在这里有一个简单的任务 根据批量大小将 n 个元素的 Set 分成 m 个 Set 通常我希望将子集限制为 1 000 个元素 我写了这样的东西 其中输入是主要的 大的集合 var strings Set String input var
  • 在 React-router Link 中将对象作为 prop 传递

    我正在获取产品列表ProductList 其中 我需要将选定的产品对象传递给Product 目前 我正在尝试通过id作为路由参数并再次获取产品对象 但我想发送整个产品对象ProductList to Product 我的路线是
  • 如何在 Swift 中存根 URLSession?

    我一直在关注这个tutorial存根URLSession 这个例子是通过创建一个协议并扩展现有协议来完成的URLSession protocol URLSessionProtocol typealias DataTaskResult Dat
  • 在 Ruby 中使用 Iconv 进行音译

    当我尝试音译西里尔字母 utf 8 字符串时 Iconv iconv ascii ignore translit utf 8 string to s see 问题 1726404 音译 in ruby 除了那些必须音译的符号之外 我得到了所
  • 使用主题和代理传递数据

    是否可以在服务中使用主题实现 2 路数据流 例如 假设我希望某个组件检索信息 然后通过服务主题将其发布以供其他组件使用 然后 使用组件对此信息进行一些更改 然后重新发布它 以便原始组件可以检索更改 使用观察者模式可以实现这一点吗 另外 如果
  • Spring Boot 嵌入式 Tomcat 依赖在启动时引发异常

    我正在从 JBoss Wildfly 移植一个旧应用程序以在 tomcat 上运行 我能够完成的大部分事情都是通过网络上找到的资源完成的 然而 我对最新一期的运气不太好 我很早就知道我必须添加 providedRuntime org apa
  • 尝试在 Mac OS X 上使用 Subversion 提交时出现错误

    Using 颠覆我尝试承诺 svn ci dir filename 我明白了 svn system emacs svn commit tmp returned 256 这是什么意思 我该如何修复它 可能相关 我在上看到类似的错误vim设置时
  • 身份规范设置为 false

    我在用EF5 and Code First创建数据库 当实体有Id field EF 创建这样的字段Primary Key在数据库中并设置Identity specification to true 自动生成的值 如何设置Identity
  • 如何分析 C 程序的内存使用情况

    我需要弄清楚我正在运行的 Linux 程序的哪一部分占用了多少 百分比或绝对 内存 我需要创建多个此类程序的配置文件 以便我可以识别代码中一些较大的内存消耗者 并查看是否可以优化它们以减少使用 我需要在 MIPS 平台上使用它 不幸的是 V
  • 结合Raphael和jQuery实现浏览器兼容

    发现IE不处理javascriptonmouseout 我决定改用 jQuery 这样跨浏览器兼容性就会自动得到解决 我正在制作一个由 svg 路径定义的区域 当鼠标悬停在其上方时 该区域会亮起 并且我改编了 Raphael 网站上提供的代
  • 使用适配器动态更新列表视图

    This教程使用 SimpleAdapter 工作正常 但我需要在输入新数据时更新适配器中的数组 您能否指导我如何使用 SimpleAdapter 以外的其他内容更新 ListView Use a 阵列适配器由 ArrayList 支持 要
  • 如何定义 matplotlib 和 seaborn 轴

    我在绘图中打开和关闭轴以及适当调整轴的大小时遇到 困难 我已经关注了几个线程 我的方法是 f1 plt figure 1 3 3 ax Subplot f1 111 f1 add subplot ax ax scatter current
  • Objective-C,对包含数字的字符串数组进行排序[重复]

    这个问题在这里已经有答案了 假设我有一个像这样的数组 NSArray arr 1 4 2 8 11 10 14 9 note strings containing numbers 我想像这样对它们进行排序 1 2 4 8 9 10 11 1