簡體   English   中英

如何正確深度復制多維NSMutableArray?

[英]how to deep copy multidimensional NSMutableArray correctly?

您好以前問過這個問題: 您如何深度復制多維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

我做錯了什么,或者只是不可能深度復制多維數組而不使其元素變得不可變?

這有解決方法嗎?

謝謝

嘗試

NSMutableArray *mutableArray = [multiDimArray mutableCopy];

用。。。來代替

NSMutableArray *mutableArray = [[NSMutableArray arrayWithArray:multiDimArray] mutableCopy];

我得到了這個:

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循環。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM