我有一个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目录并保存。这可能有什么问题?
答案 0 :(得分:1)
您需要将NSNumber对象放入字典中。 什么数据类型是“selectedVisited”?,我想你不会在这一行得到错误:
selectedVisited = visitedSegmentedControl.selectedSegmentIndex;
您选择的数据类型可能是NSInteger。 (由于selectedSegmentIndex是NSInteger)。
您需要将值放入字典中,如下所示:
NSNumber *newValue = [[NSNumber alloc] initWithInteger:selectedVisited];
[states setValue:newValue forKey:THERE_KEY];
[newValue release];