/ / wie man multidimensionales NSMutableArray korrekt tief kopiert? - objective-c, multidimensionales Array, nsmutablearray, deep-copy

Wie kann multidimensionales NSMutableArray korrekt tief kopiert werden? - objective-c, multidimensionales Array, nsmutablearray, deep-copy

Hi diese Frage wurde vorher gestellt: Wie kopierst du ein multidimensionales NSMutableArray und seinen Inhalt? aber die Antwort hat nicht für mich funktioniert.

Ich habe es versucht:

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

und:

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

Das Kopieren funktioniert, aber wenn ich versuche, ein Objekt zu ersetzen, erhalte ich den Fehler:

- [__ NSArrayI replaceObjectAtIndex: withObject:]: nicht erkannter Selektor, der an die Instanz 0x1073b1790 gesendet wurde

Mache ich etwas falsch oder ist es einfach nicht möglich, ein multidimensionales Array zu kopieren, ohne dass seine Elemente unveränderlich werden?

Gibt es einen Workaround dafür?

Vielen Dank

Antworten:

0 für die Antwort № 1

Versuchen

NSMutableArray *mutableArray = [multiDimArray mutableCopy];

ersetzen mit

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

0 für die Antwort № 2

Ich habe damit angefangen zu arbeiten:

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

Ich habe es für ein zweidimensionales Array getan. Wenn es mehr Dimensionen gibt, müssen Sie wahrscheinlich für jede Dimension eine zusätzliche for-Schleife hinzufügen.