2010-07-17 2 views
0

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

-(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 и быть записаны в каталог документов и сохранены. Что здесь может быть не так?

ответ

1

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

selectedVisited = visitedSegmentedControl.selectedSegmentIndex; 

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

Вы должны поместить значение в словаре что-то вроде этого:

NSNumber *newValue = [[NSNumber alloc] initWithInteger:selectedVisited]; 
[states setValue:newValue forKey:THERE_KEY]; 
[newValue release]; 
Смежные вопросы