Как обновить NSMutableDictionary.Мой код не работает - PullRequest
0 голосов
/ 30 мая 2010

Я заполнил массив с помощью.

arrSettings = [[NSMutableArray alloc] initWithContentsOfFile:[self settingsPath]];

Файл представляет собой список с корнем в виде массива, а затем словарь с тремя тремя ключами, определенными как число Я также попытался установить ключи для строки.

Я отображаю значения в файле plist на виде, используя.

diaper = [[arrSettings objectAtIndex:0] objectForKey:@"Diaper Expenses"];
oil = [[arrSettings objectAtIndex:0] objectForKey:@"Oil Used"];
tree = [[arrSettings objectAtIndex:0] objectForKey:@"Wood Used"]; 

Этот код работает нормально, значения в словаре присваиваются переменным, и они отображаются. Пользователь может внести изменения, а затем нажать кнопку сохранения.

Я использую этот код для извлечения словарной части массива, чтобы я мог его обновить. Назначение editDictionary работает. Я дважды проверил имена ключей, включая регистр, и это правильно.

editDictionary = [[NSMutableDictionary alloc] init];
editDictionary = [arrSettings objectAtIndex:0];
NSNumber *myNumber = [NSNumber numberWithFloat:diaperAmount];
[editDictionary setValue:myNumber forKey:@"Diaper Expenses"];
myNumber = [NSNumber numberWithFloat:oilAmount];    
[editDictionary setValue:myNumber forKey:@"Oil Used"];
myNumber = [NSNumber numberWithFloat:treeAmount];
[editDictionary setValue:myNumber forKey:@"Wood Used"];

В этом примере я использовал nsnumber. Но я также попробовал поле xxxAmount как часть SetValue вместо создания NSNumber. Ни одна реализация не работает.

Происходит несколько странных вещей. Иногда первые два оператора setvalue работают, но последнее значение setvalue завершается с ошибкой EXC_BAD_ACCESS. В других случаях первый setValue завершается с той же ошибкой. Я понятия не имею, почему первые два иногда работают.

Я не знаю, что делать дальше. Я пробовал несколько внедрений, и ни один из них не работает. Кроме того, в отладчике, как я могу отобразить элементы editDictionary. Я вижу editDictionary, но не знаю, как отобразить отдельные элементы.

1 Ответ

2 голосов
/ 30 мая 2010

У вас есть 2 назначения для editDictionary, а второе стирает первое. Может быть, вы имели в виду что-то вроде editDictionary = [[arrSettings objectAtIndex:0] mutableCopy]?

...