2012-11-08 20 views
1

我簡化了這個問題,但作爲一個例子,假設我有一個名爲Employee的實體和一個名爲vacationing的布爾屬性,它是非可選的,但默認值爲NO集。當模型中設置了默認值時,爲什麼會獲得「度假是必需的值」?

但是,在嘗試將更新保存到Employee實體時,我看到「休假是必需的值」。代碼如下所示:

- (void)reinstateEmployee:(Employee*)employee context:(NSManagedObjectContext*)context { 
    employee.vacationing = NO; 

    NSError *error; 
    if (![context save:error]) { 
     NSLog(@"Error saving: %@", error.localizedDescription); 
    } 
} 

回答

2

的這裏的問題是,NO實際上只是0這也代表nilNULL的別名。

因爲它是完全有效的分配nil一個NSNumber屬性,編譯器不抱怨,而不是設置vacationing爲假,將取消設置它,則需要屬性時,這是無效的。

YES代替NO會更明顯,這會產生編譯器警告。

要修復此問題,請將NO替換爲@NO[NSNumber numberWithBool:NO],以改爲指定NSNumber實例。

相關問題