CoreDataでBOOLを1または0に設定するUISwitchがあります。ただし、ユーザーがスイッチを使用してビューをロードすると、コアデータはスイッチが1(オン)に設定されていることを認識しますが、スイッチは引き続き表示されます。以下のコードがあります。注:アプリケーションを開始および終了すると、スイッチは正しく表示されますが、電話の電源を切って1つにするか、iPhoneシミュレーターを停止して開始すると、スイッチが表示されます。誰かが助けることができますか?
「setSwtich」はUISwitchのメソッド、「list」はUISwitchの名前、「indicator」はBOOLが格納されているコアデータイベント属性です。
-(IBAction)setSwitch
{
if (list.on)
{
[event setIndicator:[NSNumber numberWithInt:1]];
NSError *error;
if (![managedObjectContext save:&error])
{
NSLog(@"there was an error in Save");
}
}
else [event setIndicator:[NSNumber numberWithInt:0]];
NSError *error;
if (![managedObjectContext save:&error])
{
NSLog(@"there was an error in Save");
}
}
- (void)viewDidLoad
{
[super viewDidLoad];
if (event.indicator == [NSNumber numberWithInt:1]) {
[list setOn:YES animated:NO];
}
else nil;
}
-(void)viewDidAppear:(BOOL)animated
{
if (event.indicator == [NSNumber numberWithInt:1]) {
[list setOn:YES animated:NO];
}
}
- (void)viewDidUnload
{
if (list.on) {
[event setIndicator:[NSNumber numberWithInt:1]];
}
NSError *error;
if (![managedObjectContext save:&error])
{
NSLog(@"there was an error in Save");
}
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
-(void)viewDidDisappear:(BOOL)animated
{
if (list.on) {
[event setIndicator:[NSNumber numberWithInt:1]];
}
NSError *error;
if (![managedObjectContext save:&error])
{
NSLog(@"there was an error in Save");
}
}