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];
}

私は2次元配列のためにそれをしました。それ以上の次元がある場合は、すべての次元に対して余分な for ループを追加する必要があります。

于 2012-09-23T12:34:54.033 に答える