Что такое Objective-C способ получения nullable bool?

Как мне получить получение значения bool, которое я могу назначить true, false и nil в Objective-C? Что такое Objective-C способ сделать это? Очень похоже на С# Nullable.

Я ищу, чтобы иметь возможность использовать значение nil для представления undefined.

Ответы

Ответ 1

Может помочь экземпляр NSNumber. Например:

NSNumber *yesNoOrNil;

yesNoOrNil = [NSNumber numberWithBool:YES]; // set to YES
yesNoOrNil = [NSNumber numberWithBool:NO];  // set to NO
yesNoOrNil = nil; // not set to YES or NO

Чтобы определить его значение:

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 после 10.3 и на всех платформах iPhone OS -[NSNumber boolValue] гарантированно вернется ДА или НЕТ.

Ответ 2

Я думаю, вам нужно будет использовать для этого какой-то класс, например. wrap bool до объекта NSNumber.