如何使用 sortUsingFunction(或 sortUsingSelector)对包含数组的对象的 NSMutableArray 进行排序

发布于 2024-12-29 18:35:18 字数 392 浏览 4 评论 0原文

我有一个模型对象的 NSMutableArray 。每个模型对象都包含一个由 NSNumbers 组成的 NSArray。我想根据模型对象各自数字数组中的最低 NSNumber 值对模型对象进行排序。

使用 sortUsingFunction (或 sortUsingSelector)实现此目的的最佳方法是什么?我仍然支持 iOS 3.2,因此我无法使用块。

目前,我使用最低的 NSNumber 值标记每个模型对象,然后在标记键上使用 NSSortDescriptor...但我确信有更好的方法...

I have an NSMutableArray of model objects. Each model object contains an NSArray of NSNumbers. I want to sort the model objects based on the lowest NSNumber value from their respective number arrays.

What's the best way to implement this using sortUsingFunction (or sortUsingSelector)? I'm still supporting iOS 3.2 so I can't use blocks.

Currently, I'm tagging each model object with the lowest NSNumber value, and then using an NSSortDescriptor on the tag key... but I'm sure there's a better way...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

空城仅有旧梦在 2025-01-05 18:35:18

我不确定这是否是最干净或最有效的方法,但您可以为模型类 - (NSComparisonResult)compare:(MyModel *)otherModel 编写一个方法,您可以:

  1. selfotherModel 对象的 NSNumbersNSArray 进行排序,使用sortedArrayUsingSelector:@selector(compare:)
  2. 获取您在步骤 1 中创建的两个排序数组的索引 0 处的 NSNumber 对象(这将是每个数组中的最小值) array)
  3. 返回 [lowestSelfNumber Compare:lowestOtherNumber] 的结果

然后你可以使用 sortUsingSelector:@selector(compare:) 对可变数组进行排序

I'm not sure if this is the cleanest or most efficient way to do it, but you can write a method for your model class - (NSComparisonResult)compare:(MyModel *)otherModel, which you would:

  1. Sort the NSArray of NSNumbers for both the self and otherModel objects using sortedArrayUsingSelector:@selector(compare:)
  2. Get the NSNumber object at index 0 for both of the two sorted arrays you created in step 1 (which will be the lowest value in each array)
  3. Return the result of [lowestSelfNumber compare:lowestOtherNumber]

Then you can sort the mutable array with sortUsingSelector:@selector(compare:)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文