Ich habe zwei NSMutableArray
s, beide erhalten die gleichen Daten. Mein Problem ist, dass, wenn ich die gleichen Daten den veränderbaren Arrays aus verschiedenen Wörterbüchern zuweise und Operationen auf einem NSMutableArray
ausführen, beide Arrays betrifft.NSMutableArray beeinflusst das andere NSMutableArray?
Wenn ich zum ersten Mal Operationen wie replaceObjectAtIndex:WithObject:
führe, ist das Array nicht betroffen, aber wenn das zweite Ersetzen aufgerufen wird, haben beide Arrays den ersetzten Wert. Ich denke, es ist ein Bezugsproblem.
Hat jemand eine Lösung dafür?
Name der NSMutableArrays
ist helper.urlsRecording
und helper.holdingArr
.
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
NSMutableDictionary *dict2 = [[NSMutableDictionary alloc] init];
[dict setValue:outputFileURL forKey:@"URL"];
[dict setValue:@"1" forKey:@"index"];
[dict2 setValue:outputFileURL forKey:@"URL"];
[dict2 setValue:@"1" forKey:@"index"];
[helper.urlsRecording addObject:dict];
[helper.holdingArr addObject:dict2];
[helper.urlsRecording replaceObjectAtIndex:button.tag withObject:urlAr];//When this called second time, both the arrays is effected(helper.urlsRecording as well as helper.holdingArr).
Wie kann ich das Kopieren der Referenz auf ein anderes Array verhindern?
Button-Click:
if([button isSelected] == NO){
NSLog(@"Url Recording : %@",helper.urlsRecording);
[[helper.urlsRecording objectAtIndex:button.tag] removeObjectForKey:@"URL"];
button.selected = YES;
NSLog(@"Url Recording : %@",helper.urlsRecording);
}
else{
[helper.urlsRecording replaceObjectAtIndex:button.tag withObject:[helper.holdingArr objectAtIndex:button.tag]];
button.selected = NO;
NSLog(@"Url Recording : %@",helper.urlsRecording);
}
Hinweis: NSMutableArray
definiert ist global in einer Klasse zu erreichen.
, wie Sie diese zwei Arrays initialisiert wird? –
@ReinierMelian Überprüfen Sie die Bearbeitung bitte – Williams
Ja, ich initialisiere sie, das ist, warum ich die Daten bekomme. – Williams