0

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");
    }
}
4

1 に答える 1

2

多分それはあなたが使用する方法です==.Appleによって定義された比較を試してください:

isEqualToNumber:

Returns a Boolean value that indicates whether the receiver and a given number are equal.
- (BOOL)isEqualToNumber:(NSNumber *)aNumber
Parameters

aNumber

    The number with which to compare the receiver.

Return Value

YES if the receiver and aNumber are equal, otherwise NO.
Discussion

Two NSNumber objects are considered equal if they have the same id values or if they have equivalent values (as determined by the compare: method).

This method is more efficient than compare: if you know the two objects are numbers.
于 2011-05-01T16:43:38.330 に答える