Как Objective-C способ получить обнуляемое bool? - PullRequest
16 голосов
/ 11 августа 2010

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

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

Ответы [ 2 ]

30 голосов
/ 11 августа 2010

Может помочь экземпляр 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] гарантированно возвращает YES или NO.

1 голос
/ 11 августа 2010

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

...