使用不自然的排序顺序重新排列 NSMutableArray
Rearranging NSMutableArray with unnatural sort order
我想以一种非常特殊的方式重新排列 NSMutableArray
。这个
1, 7, 0, 45, 0, 0, 500, 0
会变成这样
1, 7, 45, 500, 0, 0, 0, 0
。
任何非 0(或某些特殊值)的值都应按正常顺序排在开头,0 排在末尾。我该怎么做?
这将用于从 table 视图中删除一个单元格,我的 table 可以使单元格索引始终指向数组中的元素。如果我留空 space 索引将不再与数组对齐。
你可以这样排序
[array sortUsingComparator:^(NSNumber *obj1, NSNumber *obj2) {
if ([obj1 isEqualToNumber:@0]) {
return NSOrderedDescending;
} else if ([obj2 isEqualToNumber:@0]) {
return NSOrderedAscending;
}
return [obj1 compare:obj2];
}];
不用担心,只需使用 removeObjectAtIndex:
就可以很好地满足我的需求。 removeObjectAtIndex:
通过将所有对象的索引偏移 -1 来移动所有对象。如果有人需要将 0
保留在末尾,那么您可以在删除它们之后添加它们。
我想以一种非常特殊的方式重新排列 NSMutableArray
。这个
1, 7, 0, 45, 0, 0, 500, 0
会变成这样
1, 7, 45, 500, 0, 0, 0, 0
。
任何非 0(或某些特殊值)的值都应按正常顺序排在开头,0 排在末尾。我该怎么做?
这将用于从 table 视图中删除一个单元格,我的 table 可以使单元格索引始终指向数组中的元素。如果我留空 space 索引将不再与数组对齐。
你可以这样排序
[array sortUsingComparator:^(NSNumber *obj1, NSNumber *obj2) {
if ([obj1 isEqualToNumber:@0]) {
return NSOrderedDescending;
} else if ([obj2 isEqualToNumber:@0]) {
return NSOrderedAscending;
}
return [obj1 compare:obj2];
}];
不用担心,只需使用 removeObjectAtIndex:
就可以很好地满足我的需求。 removeObjectAtIndex:
通过将所有对象的索引偏移 -1 来移动所有对象。如果有人需要将 0
保留在末尾,那么您可以在删除它们之后添加它们。