0

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 ディレクトリに書き込まれて保存されます。ここで何が問題なのですか?

4

1 に答える 1

1

NSNumber オブジェクトをディクショナリに入れる必要があります。「selectedVisited」とはどのようなデータ型ですか?、次の行でエラーが発生しないと思います:

 selectedVisited = visitedSegmentedControl.selectedSegmentIndex;

選択したデータ型はおそらく NSInteger です。(selectedSegmentIndex は NSInteger であるため)。

次のように値を辞書に入れる必要があります。

NSNumber *newValue = [[NSNumber alloc] initWithInteger:selectedVisited];
[states setValue:newValue forKey:THERE_KEY];
[newValue release];
于 2010-07-17T18:03:33.450 に答える