【问题标题】:How to sort two different objects in an NSArray?如何对 NSArray 中的两个不同对象进行排序?
【发布时间】:2012-02-10 15:29:25
【问题描述】:

在我的 NSArray 中,我有两种类型的对象,比如说 A 类和 B 类的对象。 我想通过将 A 类的“startingDate”属性与 B 类的“endingDate”属性进行比较来对这些对象进行排序。我不知道如何根据不同类的两个不同属性进行比较。

最好的方法是什么?

【问题讨论】:

    标签: ios sorting comparison nsarray


    【解决方案1】:

    块是你想要的,看看这个问题: How to sort an NSMutableArray with custom objects in it?

    在该问题的块示例中,只让 A 类使用开始日期,B 类使用结束日期。

    【讨论】:

    • 是的,我看到了,但是所有块方法都在比较相同类型的对象。我的意思是块的参数是 id obj1 和 id obj2,但随后它们被强制转换为相同的类。既然我有两种不同类型的对象,那么投射不是问题吗?我如何知道将哪个论点转换为我的第一堂课?
    • 你可以通过 [[(obj1/obj2) class] isSubclassofClass: [TargetClass class]] 来查看 obj1 和 obj2 是什么类,然后适当处理。
    • 当然可以,但是这样做有点麻烦。如果没有更好的选择,我会去那里,谢谢。
    • @Jacob 使用isKindOfClass,因为这两个对象都可能是NSObject 的子类,或者它们可能是其他更高级别对象的子类。
    【解决方案2】:

    我会推荐一个 if/else 块和语句的使用

    [myObject isKindOfClass:[ClassA 类]]

    返回 BOOL

    如果您愿意(或结合使用),Apple 建议使用

    [myObject respondsToSelector:@selector(startingDate)]

    这也返回一个 BOOL。

    在这种情况下,块并不真正相关;您可以在普通方法实现、块、for/while 循环或其他任何地方使用此设计模式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-19
      • 1970-01-01
      • 1970-01-01
      • 2012-02-14
      • 1970-01-01
      • 1970-01-01
      • 2020-11-06
      • 2011-09-09
      相关资源
      最近更新 更多