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

Byt*_*yte 3 sorting nsarray cgpoint ios nsvalue

Qeustion:几乎与标题中所述相同.我查看了互联网,但找不到任何易于理解的内容.我有NSArray很多NSValue.NSValue每个人都持有一个CGPoint.我希望在x那之前按y秒排序.

一些代码:

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

Vla*_*mir 9

要对值进行排序,您必须再次将它们"拆箱"到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;
    }];
Run Code Online (Sandbox Code Playgroud)