如何更改NSMutableDictionary int值

时间:2010-07-17 17:24:49

标签: iphone save plist nsmutabledictionary documents

我有一个StateArray.plist设置有50个字典条目,每个条目包含一个字符串,其中包含状态名称和数字0.我希望能够做的是通过分段控件将0更改为1保存更新的plist。我的代码如下,不会保存更改的数字。

-(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 个答案:

答案 0 :(得分:1)

您需要将NSNumber对象放入字典中。 什么数据类型是“selectedVisited”?,我想你不会在这一行得到错误:

 selectedVisited = visitedSegmentedControl.selectedSegmentIndex;

您选择的数据类型可能是NSInteger。 (由于selectedSegmentIndex是NSInteger)。

您需要将值放入字典中,如下所示:

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