2011-05-01 76 views
0

我有一個UISwitch在CoreData中將BOOL設置爲1或0。但是,當用戶使用交換機加載視圖時,核心數據會將交換機設置爲1(開啓),但交換機仍然顯示。以下是代碼。注意:當您進入和退出應用程序時,開關會正確顯示,但是如果您關閉並關閉手機,或者停止並啓動iPhone模擬器,它將顯示。有人可以幫忙嗎?UISwitch ViewDidLoad設置在

「setSwtich」是對UISwitch的方法,「名單」是UISwitch的名稱和「指標」是核心數據事件屬性的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"); 
    } 
} 
+0

此外,僅僅是明確的,我知道的核心數據元素被記錄並正確保存;創建列表指標工作的效果,這是純粹是在開關上顯示ON/OFF,這是問題所在。 – Eric 2011-05-01 16:39:06

回答

2

也許它只是這樣你使用==。嘗試比較蘋果定義爲:

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. 
+0

我愛的堆棧溢出,非常感謝 – Eric 2011-05-01 16:50:23