Ios 对Objective-C阵列进行就地排序
在面向对象编程中,就地排序数组是很常见的。但这似乎不是Objective-C中的默认设置。在Objective-C中,无论我使用的是NSArray还是NSMutableArray,我都无法进行适当排序,而是必须排序到另一个数组:即另一个内存块。这真的对吗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"];
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中包含了一个排序示例。我想知道如果可能的话,我可以如何进行排序。不,只有一个人感到困惑,该答案现在被删除。