// populate 'project' with contents of key in `gDictRoot`
NSDictionary *project = [gDictRoot valueForKeyPath:@"root.project0"];
// modify 'project' as necessary - actual code omitted for brevity
[project setValue:[someDict valueForKey:@"foo"] forKeyPath:@"parameters.foo"];
// add 'project' to 'gDictRoot' so it isn't lost when the view is dismissed
[gDictRoot setValue:project forKeyPath:@"root.project2"];
Третья строка, где я добавляю project
к gDictRoot
— project0
также изменяется. Не знаю почему.
NSLog(@"%p %p", [gDictRoot valueForKeyPath:@"root.project0"], [gDictRoot valueForKeyPath:@"root.project2"]);
? - person ldiqual   schedule 13.08.20120x6b9cc10 0x6b9cc10
... Я так понимаю, я неправильно инициализируюproject
? - person Thromordyn   schedule 13.08.2012@"root.project0"
в корневом словаре. Может быть, вы хотели копию? - person Phillip Mills   schedule 13.08.20120x6b3eb30 0x6b27d90
, так что это должно быть исправлено, ноgDictRoot
все еще сохраняетproject
как вroot.project0
, так и вroot.project2
. - person Thromordyn   schedule 13.08.2012