Ну, для целых чисел я бы использовал NSNumber
. Думаю, ДА и НЕТ не объекты. Насколько мне известно. Я могу добавлять объекты только к NSDictionary
, правильно?
Я не смог найти какой-либо класс-оболочку для булевых. Есть ли?
Ну, для целых чисел я бы использовал NSNumber
. Думаю, ДА и НЕТ не объекты. Насколько мне известно. Я могу добавлять объекты только к NSDictionary
, правильно?
Я не смог найти какой-либо класс-оболочку для булевых. Есть ли?
Вы используете NSNumber.
У него есть методы init... и number..., которые берут booleans, так же, как целые числа и т.д.
// Creates and returns an NSNumber object containing a
// given value, treating it as a BOOL.
+ (NSNumber *)numberWithBool:(BOOL)value
и
// Returns an NSNumber object initialized to contain a
// given value, treated as a BOOL.
- (id)initWithBool:(BOOL)value
и
// Returns the receiver’s value as a BOOL.
- (BOOL)boolValue
Новый синтаксис с Apple LLVM Compiler 4.0
dictionary[@"key1"] = @(boolValue);
dictionary[@"key2"] = @YES;
Синтаксис преобразует BOOL
в NSNumber
, что приемлемо для NSDictionary
.
Если вы объявляете это как литерал, и используете clang v3.1 или выше, вы должны использовать @NO/@YES, если вы объявляете его как литерал. Например.
NSMutableDictionary* foo = [@{ @"key": @NO } mutableCopy];
foo[@"bar"] = @YES;
Подробнее об этом:
Как отметил jcampbell1, теперь вы можете использовать литеральный синтаксис для NSNumbers:
NSDictionary *data = @{
// when you always pass same value
@"someKey" : @YES
// if you want to pass some boolean variable
@"anotherKey" : @(someVariable)
};
Попробуйте следующее:
NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];
[dic setObject:[NSNumber numberWithBool:TRUE] forKey:@"Pratik"];
[dic setObject:[NSNumber numberWithBool:FALSE] forKey:@"Sachin"];
if ([dic[@"Pratik"] boolValue])
{
NSLog(@"Boolean is TRUE for 'Pratik'");
}
else
{
NSLog(@"Boolean is FALSE for 'Pratik'");
}
if ([dic[@"Sachin"] boolValue])
{
NSLog(@"Boolean is TRUE for 'Sachin'");
}
else
{
NSLog(@"Boolean is FALSE for 'Sachin'");
}
Выход будет следующим:
Логическое значение TRUE для Pratik '
Boolean FALSE для ' Sachin'