Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS:NSValue包装CGPoint的NSArray排序_Ios_Sorting_Nsarray_Cgpoint_Nsvalue - Fatal编程技术网

iOS:NSValue包装CGPoint的NSArray排序

iOS:NSValue包装CGPoint的NSArray排序,ios,sorting,nsarray,cgpoint,nsvalue,Ios,Sorting,Nsarray,Cgpoint,Nsvalue,Qeustion:与标题中所述的差不多。我在网上查了一下,但找不到任何容易理解的东西。我有NSArray,其中包含许多NSValue。那些NSValue都有一个CGPoint。我想按x然后按y秒对它们进行排序 某些代码: NSValue * valuePointObject = [NSValue valueWithCGPoint:CGPointMake(x, y)]; NSArray *array = [[NSArray alloc] initWithObjects: valuePointObj

Qeustion:与标题中所述的差不多。我在网上查了一下,但找不到任何容易理解的东西。我有
NSArray
,其中包含许多
NSValue
。那些
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;
    }];
NSArray*sortedArray=[使用比较器的数组sortedArray:^NSComparisonResult(NSValue*obj1,NSValue*obj2){
CGPoint p1=[obj1 CGPointValue];
CGPoint p2=[obj2 CGPointValue];
如果(p1.x==p2.x)返回p1.y
array=[array sortedarray usingcomparator:^n比较结果(NSValue*obj1,NSValue*obj2){
if(obj1.CGPointValue.xobj2.CGPointValue.x){
退而求其次;
}
if(obj1.CGPointValue.yobj2.CGPointValue.y){
退而求其次;
}
返回指定名称;
}];
    array = [array sortedArrayUsingComparator:^NSComparisonResult(NSValue *obj1, NSValue *obj2) {

        if (obj1.CGPointValue.x < obj2.CGPointValue.x) {
            return NSOrderedAscending;
        }

        if (obj1.CGPointValue.x > obj2.CGPointValue.x) {
            return NSOrderedDescending;
        }

        if  (obj1.CGPointValue.y < obj2.CGPointValue.y) {
            return NSOrderedAscending;
        }

        if  (obj1.CGPointValue.y > obj2.CGPointValue.y) {
            return NSOrderedDescending;
        }

        return NSOrderedSame;
    }];