我應該如何獲得一個布爾值,我可以在Objective-C中分配true,false和nil? Objective-C的做法是什麼?很像C#的Nullable。什麼是Objective-C獲取可空對象的方法?
我期待能夠使用零值來表示不確定。
我應該如何獲得一個布爾值,我可以在Objective-C中分配true,false和nil? Objective-C的做法是什麼?很像C#的Nullable。什麼是Objective-C獲取可空對象的方法?
我期待能夠使用零值來表示不確定。
一個NSNumber
例如可能的幫助。例如:10.3後
if (yesNoOrNil == nil)
{
NSLog (@"Value is missing!");
}
else if ([yesNoOrNil boolValue] == YES)
{
NSLog (@"Value is YES");
}
else if ([yesNoOrNil boolValue] == NO)
{
NSLog (@"Value is NO");
}
在所有Mac OS X平臺和所有iPhone OS平臺上,-[NSNumber boolValue]
方法保證返回YES或NO:
NSNumber *yesNoOrNil;
yesNoOrNil = [NSNumber numberWithBool:YES]; // set to YES
yesNoOrNil = [NSNumber numberWithBool:NO]; // set to NO
yesNoOrNil = nil; // not set to YES or NO
爲了確定其值。
我想你會需要使用一些類是,例如將bool包裝爲NSNumber
對象。
+1你肯定不會需要* *使用一個類,但它是最好的方式。 – walkytalky 2010-08-11 08:40:05
所以,就像...你怎麼做到的? – 2013-07-06 22:01:11
@alexgray,就像在接受的答案 – Vladimir 2013-07-06 22:06:40
一樣,這是最接近本地做的方式,但我討厭這樣做。如果一個開發者忘記該屬性是一個'NSNumber *'並且認爲它是一個'BOOL',那麼它會導致難以發現的錯誤,在這種情況下,它們會測試if(yesNoOrNil)',並且它會給出不正確的結果而不帶任何警告。 – 2013-09-20 13:53:47