iOS:对包装 CGPoint 的 NSValue 的 NSArray 进行排序

标签 ios sorting nsarray cgpoint nsvalue

问题:与标题​​中所说的差不多。我浏览了互联网,但找不到任何易于理解的内容。我有包含许多 NSValueNSArray。这些 NSValue 每个都有一个 CGPoint。我想按 x 排序,然后按 y 排序。

一些代码:

NSValue * valuePointObject = [NSValue valueWithCGPoint:CGPointMake(x, y)];
NSArray *array = [[NSArray alloc] initWithObjects: valuePointObject, valuePointObject2, ..., nil];

最佳答案

要对值进行排序,您必须再次将它们“拆箱”到 CGPoints。代码可能是这样的:

NSArray *sortedArray = [array sortedArrayUsingComparator:^NSComparisonResult(NSValue *obj1, NSValue *obj2) {
        CGPoint p1 = [obj1 CGPointValue];
        CGPoint p2 = [obj2 CGPointValue];
        if (p1.x == p2.x) return p1.y < p2.y;
        return p1.x < p2.x;
    }];

关于iOS:对包装 CGPoint 的 NSValue 的 NSArray 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10231261/

相关文章:

ios - 在Swift中动态实例化ObjC类(使用NSClassFromString?)

ios - 方向更改后的自定义 UIButton 背景

ios - 在跳过一个 View Controller 时导航 - iOS

ios - 如何调试 iOS Handoff?

临时将项目分配给人员并处理分配重组的算法

ios - JSON 到 NSDictionary 到 NSArray 给我空的 NSArray ? :(

c# - 如何对 Gridview 项目进行排序

c++ - 如何对在私有(private)中声明的整数进行排序

iphone - 如何用 nsarray 初始化 nsmutablearray

iphone - 在对象数组中使用数据