如何对其中包含自定义对象的 NSMutableArray 进行排序?

2024-05-08

我想做的事情看起来很简单,但我在网上找不到任何答案。我有一个NSMutableArray对象,假设它们是“Person”对象。我想排序NSMutableArray通过 Person.birthDate 这是一个NSDate.

我认为这与这个方法有关:

NSArray *sortedArray = [drinkDetails sortedArrayUsingSelector:@selector(???)];

在 Java 中,我会让我的对象实现 Comparable,或者使用 Collections.sort 和内联自定义比较器...在 Objective-C 中你到底是如何做到这一点的?


比较方法

要么为你的对象实现一个比较方法:

- (NSComparisonResult)compare:(Person *)otherObject {
    return [self.birthDate compare:otherObject.birthDate];
}

NSArray *sortedArray = [drinkDetails sortedArrayUsingSelector:@selector(compare:)];

NSSortDescriptor(更好)

或者通常更好:

NSSortDescriptor *sortDescriptor;
sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"birthDate"
                                           ascending:YES];
NSArray *sortedArray = [drinkDetails sortedArrayUsingDescriptors:@[sortDescriptor]];

通过向数组添加多个键,您可以轻松地按多个键进行排序。也可以使用自定义比较器方法。看一下文档 https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSSortDescriptor_Class/Reference/Reference.html.

块(闪亮!)

从 Mac OS X 10.6 和 iOS 4 开始,还可以使用块进行排序:

NSArray *sortedArray;
sortedArray = [drinkDetails sortedArrayUsingComparator:^NSComparisonResult(Person *a, Person *b) {
    return [a.birthDate compare:b.birthDate];
}];

表现

The -compare:一般来说,基于块的方法比使用NSSortDescriptor因为后者依赖于 KVC。主要优点NSSortDescriptor方法的优点是它提供了一种使用数据而不是代码来定义排序顺序的方法,这使得例如可以轻松地设置好以便用户可以对NSTableView单击标题行。

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

如何对其中包含自定义对象的 NSMutableArray 进行排序? 的相关文章

  • 有没有时间复杂度为O(N)的排序算法?

    大多数排序算法的复杂度为 O NN 或 O NlogN 来实现结果 但是 对于特定的输入集 有些算法的复杂度为 O N 我想知道是否有一种排序算法在所有情况下都具有 O N 的复杂度 如果您只能比较 检查两个项目是否为 正在排序的值 那么您
  • 核心数据 NSFetchRequest 还获取实体的子对象

    我是 iOS 开发和 Core Data 的新手 我有一个父 NSManagedObject class Units interface Properties NSManagedObject property nonatomic retai
  • 仅将 UIImage 移动到另一个 UIImage 内部

    I have an UIImage which is shown in an UIImageView I also have another image in an UIImageView which lays above the firs
  • 如果我的消耗性 IAP 被退款,我会收到任何通知吗?

    我有 Apple iOS 应用程序 其中有很多消耗性 IAP 我非常担心用户购买IAP并使用一段时间后向Apple客服投诉并获得退款 如果我的消耗品 IAP 退款 我会收到任何通知吗 我如何注意到这一点并阻止用户使用 IAP None
  • 如何检查 BOOL 是否为空?

    有没有办法在将值分配给 BOOL 之前检查该值是否为 NULL Nil 例如 我在 NSDictionary 中有一个值可以是 TRUE FALSE NULL mySTUser current user following results
  • 使用 Simulator 时 Xcode 10 中的屏幕截图尺寸错误

    我正在尝试使用 Xcode 10 模拟器为 iTunes 制作屏幕截图 但图像大小错误 我读过Debug gt Optimize Rendering for Window Scale会有帮助 但在 Xcode 中没有这样的选项 有人有这个问
  • 检索 iPhone 中的 Outlook 联系人

    我想通过应用程序导入所有 Outlook 联系人 有什么办法可以做到这一点吗 请告诉我 您可以通过实施 Microsoft Exchange 服务器协议来实现此目的 微软MSDN http msdn microsoft com en us
  • 无法在 iOS 企业应用程序中连接到 example.com

    我面临着一个严重的问题 我正在尝试使企业应用程序上线 通过使用 BetaBuilder 我按照以下步骤操作 myApp ipa manifest plist index html 清单 plist
  • 如何对对象进行排序? (画家算法)

    所以我有 4 个矩形形状 我正在尝试应用排序算法 画家算法 https en wikipedia org wiki Painter 27s algorithm 来知道我需要先绘制哪些形状 在 3d 中 然后绘制哪个形状 Note 相机位于右
  • 获取对 iOS 应用程序中最顶层视图/窗口的引用

    我正在创建一个可重用的框架 用于在 iOS 应用程序中显示通知 我希望将通知视图添加到应用程序中其他所有内容的顶部 有点像 UIAlertView 当我初始化监听 NSNotification 事件并添加视图作为响应的管理器时 我需要获取对
  • React Native:不透明视图内的透明视图

    我想用不透明框架和透明中心显示相机的视图 就像图片中的一样 黑色部分是相机的视图 我正在寻找具有纯反应本机组件的解决方案 没有额外的库 例如https github com gilbox react native masked view h
  • (Ionic 2)尝试回退到 Cordova-lib 执行时发生错误:TypeError:无法读取未定义的属性“then”

    Edit 使用 ionic 2 时会发生这种情况 我知道它还不稳定 但我认为可能有一些解决方案 因为其他人似乎没有遇到这个问题 Edit end 由于某种原因 我在尝试使用 ionic build android 和 ionic build
  • CBPeripheral 名称有时为 null

    我正在开发一个应用程序来与蓝牙 LE 外围设备进行通信 我目前正在测试的外围设备是其中之一these http www ti com tool cc2540dk mini 有趣的是 有时当我发现它时 我会得到它的正确名称 SimpleBLE
  • 如何在 UICollectionView 的节标题中动态添加标签和按钮?

    请帮助我如何水平添加标签和水平添加类似的按钮 但每个按钮应像另一个部分一样在每个标签的下方对齐 这应该在 UICollectionView 的标题中动态发生 因为标签和按钮的数量根据我的数据 我想制作一种 Excel 类型的布局 并在标题中
  • 使用 NSURLSessionDataTask 显示文件下载进度

    我想显示特定文件的文件下载进度 收到了多少字节 它与 NSURLSessionDownloadTask 配合得很好 我的问题是我想用 NSURLSessionDataTask 实现同样的效果 以下是将文件接收到 NSData 并写入文档文件
  • 如何防止 RealmSwift 列表中出现重复项?

    如何防止向列表中添加重复项RealmSwift 我有我的User作为领域对象 但真正的数据源是服务器 只是使用领域在本地缓存用户 当我从服务器获取当前用户数据时 我想确保存储在领域中的用户拥有来自服务器的所有播放列表 以及它们的曲目列表等
  • “同时创建 xib 文件”按钮已禁用

    我在创建时遇到这个问题UIView s子类 创建 例如 UIViewControllers or UITableViewCells没关系 为什么会出现这种情况 I create view using cmd N and Xcode Vers
  • 带有 Core Data 对象的动态 UITableView 高度

    过去几天我一直在试图解决一个谜团 即为什么我的批处理大小为 20 的 NSFetchedResultsController 总是在获取完成后立即错误 即加载到内存中 我的所有对象 从而导致请求需要约 20 秒 事实证明 这是因为在我的 he
  • 归并排序中的递归:两次递归调用

    private void mergesort int low int high line 1 if low lt high line 2 int middle low high 2 line 3 mergesort low middle l
  • NSURL URLWithString:引发异常

    简而言之 NSURL URLWithString 似乎引发了一个例外 根据文档 如果字符串格式错误 则返回 nil 没有提到在任何情况下都会引发异常 除此之外 我还对 URL 进行编码并检查nil在将字符串转换为 URL 之前 任何人都可以

随机推荐

  • 解释 scipy.stats.entropy 值

    我正在尝试使用scipy stats 熵来估计库尔巴克 莱布勒 KL 两个分布之间的散度 更具体地说 我想使用 KL 作为衡量标准来确定两个分布的一致性 但是 我无法解释 KL 值 例如 t1 numpy random normal 2 5
  • 鉴于我的代码是开源的并且我在服务器上运行,并且我接受近乎原始的代码,那么对我来说最糟糕的情况是什么?

    我正在研究几个案例 在这些案例中 接受近乎原始的代码会容易得多 所以 如果你不能使用 lambda 你能对表达式做的最糟糕的事情是什么 以及如何做 如果不能使用 import 那么对执行的代码最糟糕的情况是什么 如何使用 不能使用 X 扫描
  • 无法将方法组分配给 asp.net、linq、c# 中的隐式类型局部变量

    public void selectqueryasso CustomerOrderResult cso new CustomerOrderResult var a from as1 in ds orders from as2 in ds o
  • 将日期字符串转换为“MM/DD/YY”格式

    我刚刚看到这个例子 我该如何解决这个问题 Hive 元存储包含一个名为 Problem1 的数据库 其中包含一个名为 customer 的表 customer 表包含 9000 万条客户记录 90 000 000 每条记录都有一个生日字段
  • 在Python中使用Counter()来构建直方图?

    我在另一个问题上看到我可以使用Counter 计算一组字符串中出现的次数 所以如果我有 A B A C A A I get Counter A 3 B 1 C 1 但现在 我如何使用该信息来构建直方图 对于您的数据 最好使用条形图而不是直方
  • 无效的跨线程访问问题

    我有两个 ViewModel 类 PersonViewModel 和 PersonSearchListViewModel PersonViewModel 实现的字段之一是通过 WCF 下载的个人资料图像 本地缓存在独立存储中 PersonS
  • 用于格式化和挂载所有可用实例存储设备的脚本

    Amazon 提供实例存储 http docs amazonwebservices com AWSEC2 latest UserGuide InstanceStorage html对于 EC2 实例 如果您使用自己的 AMI 则不会自动为您
  • WordPress 标头位置重定向

    WordPress 遇到问题 我想将页面重定向到文件夹 php adminpage php 内的特定 php 文件 SESSION变量等于 1 假设会话变量为 1 但浏览器返回 Not Found 有什么办法让它发挥作用吗 更新 已解决 使
  • 如何在gitlab存储库中下载单个文件夹或文件

    我有一个存储库 在此存储库中 有多个文件夹可用 我只需要此存储库中的一个文件夹 我已经尝试遵循命令 但它不起作用 克隆 有没有办法只克隆 git 存储库子目录 https stackoverflow com questions 600079
  • 运行 JAR 时“JCE 无法验证提供者 BC”

    在我的 scala 项目中我使用 org bouncycastle bcprov jdk14 1 51 用于密码学 如果它在 Scala IDE 中测试我的项目 它工作得很好 但是一旦我制作了一个 JAR 并尝试通过以下方式运行它java
  • R 中多类分类的 ROC 曲线

    我有一个包含 6 个类别的数据集 我想绘制多类别分类的 ROC 曲线 Achim Zeileis 给出的第一个答案非常好 R中使用rpart包的ROC曲线 https stackoverflow com questions 30818188
  • 为什么我的 Airflow 任务被“外部设置为失败”?

    我使用的是 Airflow 2 0 0 我的任务在运行几秒钟或几分钟后偶尔会被 外部 终止 任务通常会成功运行 都是通过以下方式启动的手动任务 airflow tasks test 以及计划的 DAG 运行 所以我相信这与我的 DAG 代码
  • 如何提高QNX6下Eclipse IDE的性能

    我们在 VMWare 环境中通过 QNX6 运行 Eclipse 速度非常慢 Eclipse 是这样启动的 usr qnx630 host qnx6 x86 usr qde eclipse eclipse data root workspa
  • 慢速 WPF 文本框

    我正在开发一个简单的串行数据查看器 它将用于观察传输到计算机串行端口之一的数据 我使用 C 和 WPF 编写了一个测试应用程序 它只是将最近读取的行放入文本块中 但是 它会跳过所有其他行 我的理论是 在 WPF 渲染窗口之前 新数据会被放入
  • 在大型数据绑定 ObservableCollection 中添加/删除许多项目,而无需冻结 GUI

    我和我的团队正在开发一个 WPF 应用程序 该应用程序显示多个并发 XamDataChart 控件 由 Infragistics 提供 每个图表都绑定到不同的 ObservableCollection 最多可包含 200 万个点 对于每个图
  • Powershell:如何捕获主机的输出

    我正在使用 powershell 自动执行一些与 TFS 中签出 合并相关的任务 当我打电话时 tf get recurse 我得到一堆关于正在检出的文件的数据滚动 该命令生成的最后一行 假设成功 是告知签到号码的行 我想解析它 以便稍后在
  • 如何在iPhone上绘制“对话气泡”?

    当您右键单击扩展坞中的某个内容时 我试图获得类似于 Mac OS X 中的 语音气泡 效果 这是我现在所拥有的 我需要得到下部的 三角形 部分 有什么办法可以画出这样的东西并在它周围加上边框吗 这将是为了iPhone app 提前致谢 ED
  • Ktor 如何处理空响应

    我使用 Ktor 和这样的线路myentity client get url 从 API 响应获取并反序列化我的实体 当 API 返回某些内容时它工作正常 但是一旦 API 没有任何可返回的内容并发送 HTTP 204 响应 它就会失败并显
  • 树结构的序列化/反序列化

    我试图找出保存 序列化 并稍后打开 反序列化 树结构的最佳方法 我的结构由具有不同属性的各种对象类型组成 但每个对象类型都继承自基本抽象 Node 类 每个节点都有唯一的 ID GUID 并且有一个 AddSuperNode Node nd
  • 如何对其中包含自定义对象的 NSMutableArray 进行排序?

    我想做的事情看起来很简单 但我在网上找不到任何答案 我有一个NSMutableArray对象 假设它们是 Person 对象 我想排序NSMutableArray通过 Person birthDate 这是一个NSDate 我认为这与这个方