【问题标题】:moving objects in NSMutableArray without changing array size在 NSMutableArray 中移动对象而不改变数组大小
【发布时间】:2014-02-21 03:12:56
【问题描述】:

我有一个“MutableArray”,我想通过此处显示的方法在索引中上下移动不同的对象来编辑它:NSMutablearray move object from index to index

我的问题是 Xcode 首先在 'insertObject:atIndex:' 之前处理 'removeObjectAtIndex' 方法,因此数组实际上缩小了大小,这使得某些转换变得不可能。一个例子是,如果我的“数组”有 3 个成员,并且我将第三个成员的索引从 2 更改为 2,所以什么都不会发生,但实际上应用程序崩溃了,因为删除后索引绑定现在是 [0,1]。

下面是我用来实现数组移动的代码,我还在queue.count 后面的“if”语句处收到了一个解析问题:编译器的预期标识符错误。对两者的任何帮助将不胜感激。

-(void)makeRankChange:(NSMutableArray *)queue{
    for (int queueCount =0; queueCount<queue.count; queueCount++) {
        QueueMember *member = [queue objectAtIndex:queueCount];
        if (member.rank != queueCount+1) {
            if ([0<member.rank] && [member.rank < [queue.count(expected identifier here:Im not sure why)]]) {
                [queue insertObject:member atIndex:member.rank-1];
                [queue removeObjectAtIndex:queueCount];
            }

        }
    }
}

【问题讨论】:

    标签: nsmutablearray


    【解决方案1】:

    如何替换索引处的值:

    [queue replaceObjectAtIndex:queueCount withObject:member];
    

    错误很可能来自if语句中的'['括号

    【讨论】:

    • 这里不适用。如果我的数组是 [a,b,c,d,e] 并且我想将 e 移动到第二个位置。使用你的方法,结果将是 [a,e,c,d,e] 而我想要 [a,e,b,c,d]
    • 对不起,我误会了。您可以使用 exchangeObjectAtIndex:withObjectAtIndex:
    • 但如果我在 e 和 b 上使用它,那么它变成 [a,e,c,d,b] 而我想要 [a,e,b,c,d] 我只想移动将数组中的 ONE 对象移动到新位置并保持其余顺序。
    • 可能需要使用并行数组来实现这一点
    猜你喜欢
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-08
    • 1970-01-01
    • 2014-11-06
    • 2015-06-06
    • 2012-10-01
    相关资源
    最近更新 更多