Проверьте, установлен ли BOOL (нельзя сделать с == nil) - PullRequest
23 голосов
/ 05 января 2010

как проверить, установлен ли BOOL в target-c (iphone)?

я знаю, что это можно сделать с помощью int или float следующим образом: NSNumber * Num = [prefs floatForKey: @ "key"]; например

Ответы [ 3 ]

40 голосов
/ 05 января 2010

Вы не можете. BOOL - это либо YES, либо NO. Там нет другого государства. Чтобы обойти это, можно использовать NSNumber ([NSNumber numberWithBool:YES];), а затем проверить, является ли NSNumber самой nil. Или укажите второй BOOL, чтобы указать, изменили ли вы значение первого.

5 голосов
/ 05 января 2010

Досадно, что Objective-C не имеет логического класса. Это, безусловно, такое чувство, что должно, и это сбивает с толку многих людей. В коллекциях и основных данных все bool хранятся как экземпляры NSNumber.

Это действительно раздражает необходимость постоянно конвертировать туда и обратно.

2 голосов
/ 04 мая 2017

По умолчанию значение bool установлено в 0 в Objective-C, поэтому вам не нужно проверять, является ли значение bool нулевым.

...