Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.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/5/objective-c/26.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 对Objective-C阵列进行就地排序_Ios_Objective C_Sorting_Nsmutablearray_Nsarray - Fatal编程技术网

Ios 对Objective-C阵列进行就地排序

Ios 对Objective-C阵列进行就地排序,ios,objective-c,sorting,nsmutablearray,nsarray,Ios,Objective C,Sorting,Nsmutablearray,Nsarray,在面向对象编程中,就地排序数组是很常见的。但这似乎不是Objective-C中的默认设置。在Objective-C中,无论我使用的是NSArray还是NSMutableArray,我都无法进行适当排序,而是必须排序到另一个数组:即另一个内存块。这真的对吗 NSArray *germanMakes = @[@"Mercedes-Benz", @"BMW", @"Porsche", @"Opel", @"Volkswagen", @"Audi"];

在面向对象编程中,就地排序数组是很常见的。但这似乎不是Objective-C中的默认设置。在Objective-C中,无论我使用的是NSArray还是NSMutableArray,我都无法进行适当排序,而是必须排序到另一个数组:即另一个内存块。这真的对吗

NSArray *germanMakes = @[@"Mercedes-Benz", @"BMW", @"Porsche",
                         @"Opel", @"Volkswagen", @"Audi"];
NSArray *sortedMakes = [germanMakes sortedArrayUsingComparator:
    ^NSComparisonResult(id obj1, id obj2) {
        if ([obj1 length] < [obj2 length]) {
            return NSOrderedAscending;
        } else if ([obj1 length] > [obj2 length]) {
            return NSOrderedDescending;
        } else {
            return NSOrderedSame;
        }
}];
NSLog(@"%@", sortedMakes);
NSArray*germanMakes=@[@“梅赛德斯-奔驰”、“宝马”、“保时捷”,
@“欧宝”、“大众”、“奥迪”];
NSArray*sortedMakes=[德国使用比较器进行分拣:
^N比较结果(id obj1,id obj2){
如果([obj1长度]<[obj2长度]){
回报率下降;
}否则如果([obj1长度]>[obj2长度]){
退而求其次;
}否则{
返回指定名称;
}
}];
NSLog(@“%@”,分类标记);

sortedarrayingcomparator方法返回一个新数组(参见文档)。这对于
NSArray
是必需的,因为
NSArray
是不可变的

NSMutableArray
可以使用
sortUsingComparator
就地排序

当然,您可以简单地执行以下操作:

germanMakes = [germanMakes sortedArrayUsingComparator:...
对于可变数组:

NSMutableArray *someMutableArray = ... // some mutable array
[someMutableArray sortUsingComparator... // sort in place

sortedarrayingcomparator
方法返回一个新数组(参见文档)。这对于
NSArray
是必需的,因为
NSArray
是不可变的

NSMutableArray
可以使用
sortUsingComparator
就地排序

当然,您可以简单地执行以下操作:

germanMakes = [germanMakes sortedArrayUsingComparator:...
对于可变数组:

NSMutableArray *someMutableArray = ... // some mutable array
[someMutableArray sortUsingComparator... // sort in place

如果我要做
[germanMakes sortedArrayUsingComparator:…
然后继续使用
germanMakes
。请注意,我省略了赋值。germanMakes是否会按排序方式运行?不,正如我所说,
NSArray
是不可变的,
sortedArrayUsingComparator
返回一个新数组。再次阅读这些方法的文档。你介意吗由于NSMutableArray排序正确的代码片段,我得到了它。非常感谢您的坚持。+1。如果我执行
[germanMakes sortedArrayUsingComparator:…
然后继续使用
germanMakes
。请注意,我省略了赋值。germanMakes是否会按排序方式运行?不,正如我所说,
NSArray
是不可变的,
sortedArrayUsingComparator
返回一个新数组。再次阅读这些方法的文档。你介意吗由于NSMutableArray在某个片段中进行了排序?我知道了。非常感谢您坚持。还有+1。似乎对我的问题有误解:我的问题不是排序,显然:我的每个OP都包含一个排序示例。我想知道如果可能的话,我可以如何进行排序。不,只有一个人感到困惑,这就是答案现在被删除了。似乎对我的问题有误解:我的问题不是排序,很明显:我的OP中包含了一个排序示例。我想知道如果可能的话,我可以如何进行排序。不,只有一个人感到困惑,该答案现在被删除。