Как я могу добавить логическое значение в NSDictionary?
Ну, для целых чисел, я хотел бы использовать NSNumber
. Но да и нет не являются объектами, я думаю. A. f.a.i. k. я могу только добавлять объекты в NSDictionary
, да?
Я не смог найти класс-оболочку для булевых значений. Есть ли такие?
5 ответов:
вы используете NSNumber.
Он имеет init... и номер... методы, которые принимают логические значения, так же как и целые числа и так далее.
// 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'"); }
вывод будет следующим:
логическое значение правда наPratik'
логическое значение ложные наСачин'