伪代码原理
//使array2 的元素按照name的排序 和 array1 一致
NSArray *array1 = xxx1;
NSArray *array2 = xxx2;
NSMutableArray *tempArray = [NSMutableArray array];
[array1 enumerateObjectsUsingBlock:^(NSObject *obj, NSUInteger idx, BOOL * _Nonnull stop) {
[array2 enumerateObjectsUsingBlock:^(id *obj2, NSUInteger idx, BOOL * _Nonnull stop) {
if ([obj.name isEqual:obj2]) {
[tempArray addObject:obj2];
}
}];
}];
array2 = tempArray.copy
实际应用
如下图,拖拽栏目之后,各个控制器的顺序和栏目的顺序要一致
实际代码
NSMutableArray * newChannldataList = [TPUserDefault instance].defaultNodeList;
//更换已经加载过的vc数据源顺序
__weak typeof(self)weakSelf = self;
NSMutableArray *nodeIdArray = [NSMutableArray array];
if (newChannldataList.count > 0) {
[newChannldataList enumerateObjectsUsingBlock:^(NSDictionary *dic, NSUInteger idx, BOOL *stop) {
[nodeIdArray addObject:dic[@"nodeId"]];
}];
}
if (self.pageViewControllers) {
NSMutableArray *tempArr = [NSMutableArray array];
[nodeIdArray enumerateObjectsUsingBlock:^(NSString *nodeId, NSUInteger i, BOOL * _Nonnull stop) {
[pageViewControllers enumerateObjectsUsingBlock:^(id vcObj, NSUInteger j, BOOL * _Nonnull stop) {
if ([vcObj isKindOfClass:[ChannelContentListController class]]) {
ChannelContentListController *contentListVC = (ChannelContentListController *)vcObj;
if (nodeId.integerValue == contentListVC.nodeId.integerValue) {
tempArr[i] = vcObj;
*stop = YES;
}
}
}];
}];
[pageViewControllers removeAllObjects];
pageViewControllers = tempArr;