Как я могу добавить логическое значение в NSDictionary?


Ну, для целых чисел, я хотел бы использовать NSNumber. Но да и нет не являются объектами, я думаю. A. f.a.i. k. я могу только добавлять объекты в NSDictionary, да?

Я не смог найти класс-оболочку для булевых значений. Есть ли такие?

5 104

5 ответов:

вы используете NSNumber.

Он имеет init... и номер... методы, которые принимают логические значения, так же как и целые числа и так далее.

С ссылка на класс NSNumber:

// 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;

для получения дополнительной информации об этом:

http://clang.llvm.org/docs/ObjectiveCLiterals.html

Как 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'

логическое значение ложные наСачин'