Проверьте, установлен ли BOOL (не может быть выполнено с помощью == nil)
Как проверить, установлен ли BOOL в objective-c (iphone)?
Я знаю, что это можно сделать с помощью int или float следующим образом:
NSNumber * Num = [prefs floatForKey: @ "key" ];
например
Ответы
Ответ 1
Вы не можете. A BOOL
- либо YES
, либо NO
. Другого государства нет. Путь вокруг этого будет заключаться в использовании NSNumber
([NSNumber numberWithBool:YES];
), а затем проверьте, является ли сама NSNumber
nil
. Или укажите второй BOOL
, чтобы указать, изменили ли вы значение первого.
Ответ 2
Раздражающе, Objective-C не имеет булева класса. Это, безусловно, похоже на то, что нужно, и это много путешествует. В коллекциях и основных данных все bools хранятся как экземпляры NSNumber.
Это очень раздражает, что нужно все время переходить туда и обратно.
Ответ 3
По умолчанию значение bool устанавливается равным 0 в Objective-C, поэтому вам не нужно проверять, равно ли ваше значение bool в любое время.
Ответ 4
Вместо этого вы можете использовать что-то подобное...
@import Foundation;
@interface CSBool : NSObject
+ (CSBool *)construct:(BOOL)value;
@property BOOL value;
@end
#import "CSBool.h"
@implementation CSBool
+ (CSBool *)construct:(BOOL)value {
CSBool *this = [self new];
this.value = value;
return this;
}
@end