Как изменить значение NSMutableDictionary int - PullRequest
0 голосов
/ 17 июля 2010

У меня есть StateArray.plist с 50 словарными записями, каждая из которых содержит строку с названием состояния и номером 0. Что я хочу сделать, это изменить 0 на 1 с помощью сегментированного элемента управления исохраните обновленный список.У меня есть код ниже, и он не будет сохранять измененное число.

-(void) viewWillAppear: (BOOL) animated 
{
 [super viewWillAppear:animated];
 nameOfStateTextField.text = [states objectForKey:NAME_KEY];
}

//segmented control
-(IBAction)visitedChanged
{
 selectedVisited = visitedSegmentedControl.selectedSegmentIndex;
}


-(IBAction)saveButton
{
 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
 NSString *documentsDirectory = [paths objectAtIndex:0];
 NSString *path = [documentsDirectory stringByAppendingPathComponent:@"StateArray.plist"];
 [states setValue:selectedVisited forKey:THERE_KEY];
 [states writeToFile:path atomically:YES];
}

Измененное сегментированное управляющее значение должно заканчиваться как новый THERE_KEY, записываться в каталог Documents и сохраняться.Что здесь может быть не так?

1 Ответ

1 голос
/ 17 июля 2010

Вам необходимо поместить объект NSNumber в словарь. Какой тип данных "selectedVisited"? Я думаю, вы не получите сообщение об ошибке в этой строке:

 selectedVisited = visitedSegmentedControl.selectedSegmentIndex;

тип данных, который вы выбираете, вероятно, NSInteger. (Так как selectedSegmentIndex является NSInteger).

Вам нужно поместить значение в словарь примерно так:

NSNumber *newValue = [[NSNumber alloc] initWithInteger:selectedVisited];
[states setValue:newValue forKey:THERE_KEY];
[newValue release];
...