【问题标题】:How to find a minimum and maximum values from NSArray having a custom class objects?如何从具有自定义类对象的 NSArray 中找到最小值和最大值?
【发布时间】:2016-11-22 15:04:19
【问题描述】:

我有一个NSArray,其中自定义类对象具有NSNumberproperty。我正在尝试从数组中获取最小值和最大值。所以这是我的代码:

MyClass *minObj = [filteredArray valueForKeyPath:@"@min.self.height"];
MyClass *maxObj = [filteredArray valueForKeyPath:@"@max.self.height"];

这可行,我可以获得最小值和最大值,但属于NSNumber 类型。所以minObjmaxObj 将是一个数字而不是MyClass 类型。

有没有什么好的方法可以找出相同的并获得MyClass 而不是NSNumber

附:可以有多个相同的值,可以是最小值或最大值。

【问题讨论】:

    标签: objective-c filter nsarray max min


    【解决方案1】:

    只需编写代码即可。例如(直接输入答案,预计会有轻微的拼写错误):

    MyObj *minObj = filteredArray[0];
    for(MyObj *candidate in filteredArray)
       if([candidate.height compare:minObj.height] == NSOrderedDescending)
          minObj = candidate;
    

    您当然可以通过一次遍历您的数组来找到最小值和最大值。

    HTH

    【讨论】:

    • 应该,filteredArray 需要排序吗?
    • 阅读代码,它使用的算法是什么(它是如何工作的)?仅当数组已排序时才有效?如果您自己解决问题,您会更好地理解答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-22
    相关资源
    最近更新 更多