Подтвердить что ты не робот

Проверьте, установлен ли BOOL (не может быть выполнено с помощью == nil)

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

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

4b9b3361

Ответ 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