【问题标题】:how to sort an Array of Dictionaries如何对字典数组进行排序
【发布时间】:2011-04-16 03:25:27
【问题描述】:

我需要使用字典中的键控对象对字典数组进行排序。该对象是一个包含浮点数的 NSString。我使用了 NSSortDescriptor 但它按字母顺序排序。我将如何制作自定义选择器或比较器以数字方式执行此操作?

【问题讨论】:

    标签: iphone objective-c ios4


    【解决方案1】:

    这应该让您了解如何使用 NSComparator 块完成此操作:

    [array sortUsingComparator:(NSComparator)^(id obj1, id obj2){
        double firstValue = [[obj1 objectForKey:@"someKey"] doubleValue];
        double secondValue = [[obj2 objectForKey:@"someKey"] doubleValue];
        double valueDiff = firstValue - secondValue;
        return (valueDiff == 0) ? NSOrderedSame : (valueDiff < 0) ? NSOrderedAscending : NSOrderedDescending;
    }];
    

    obj1obj2 是指向数组中一对字典对象的 id 指针。 无论您在 NSComparator 块中做什么,都取决于您。只要您返回NSOrderedSameNSOrderedAscendingNSOrderedDescending

    一般而言,建议您使用实数数据类型 (à la [NSNumber numberWith...:x]) 来保存此类浮点值,而不是字符串。

    【讨论】:

    • 感谢您的帮助。这非常有效。我正在考虑重新编写我的应用程序以将 NSString 更改为 NSNumbers。我真的不想这样做,但我想从长远来看会更好。最好在我发布它之前就完成它,而不是在它向公众发布之后尝试修复它。
    猜你喜欢
    • 2020-11-02
    • 1970-01-01
    • 2020-09-26
    • 1970-01-01
    • 1970-01-01
    • 2020-05-30
    • 1970-01-01
    • 2015-03-07
    相关资源
    最近更新 更多