У меня есть список свойств, который я прочитал в NSDictionary, из которого я хотел бы создать изменяемую копию в NSMutableDictionary для редактирования содержимого и - позже, чтобы иметь возможность сбрасывать изменяемый словарь путем копирования исходного содержимого.
NSDictionary *defaultRows;
NSMutableDictionary *rows;
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"Config" ofType:@"plist"];
defaultRows = [[[NSDictionary alloc] initWithContentsOfFile: plistPath] objectForKey:@"rows"];
Вот так я пытаюсь создать копию оригинального словаря (согласно рекомендация Apple) :
rows = [NSMutableDictionary dictionaryWithDictionary: defaultRows];
Когда я пытаюсь изменить содержимое строк словаря с помощью:
[[[rows objectForKey:self.company.coaTypeCode] objectForKey:statementType] removeObjectsAtIndexes:rowsToDelete];
Я получаю ошибку времени выполнения *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[__NSCFArray removeObjectAtIndex:]: mutating method sent to immutable object'
.
Я прочитал статью здесь , но интересно, есть ли более элегантный метод для реализации глубокой копии?