3

嗨,之前有人问过这个问题:您如何深度复制多维 NSMutableArray 及其内容? 但答案对我不起作用。

我试过:

NSMutableArray *copy = [[NSMutableArray alloc] initWithArray:multiDimArray copyItems:YES];

和:

NSMutableArray *mutableArray = [multiDimArray mutableCopy];
NSMutableArray *copy = [[NSMutableArray alloc] initWithArray:mutableArray copyItems:YES];

复制有效,但是当我尝试替换对象时出现错误:

-[__NSArrayI replaceObjectAtIndex:withObject:]:无法识别的选择器发送到实例 0x1073b1790

我做错了什么,还是无法在其元素不可变的情况下深度复制多维数组?

有解决方法吗?

谢谢

4

2 回答 2

0

尝试

NSMutableArray *mutableArray = [multiDimArray mutableCopy];

用。。。来代替

NSMutableArray *mutableArray = [[NSMutableArray arrayWithArray:multiDimArray] mutableCopy];
于 2012-09-23T12:33:34.257 回答
0

我得到了它的工作:

NSMutableArray *originalArray = [NSMutableArray new];

NSMutableArray *copyArray = [NSMutableArray new];
for(NSArray *subarray in originalArray) {
    NSMutableArray *subCopy = [NSMutableArray new];
    for (id item in subarray){
        [subCopy addObject:[item copy]];
    }
    [copyArray addObject: subCopy];
}

我是为二维数组做的。如果有更多维度,您可能必须为每个维度添加额外的 for 循环。

于 2012-09-23T12:34:54.033 回答