iOS使两个数组元素的排序一致

伪代码原理

//使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;
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值