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 № 1Versuchen
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.