好吧,对于整数,我会使用NSNumber
。但是,我想,YES和NO不是对象。据我所知。我只能将对象添加到NSDictionary
,对吗?
我找不到布尔值的任何包装类。有没有?
答案 0 :(得分:154)
您使用的是NSNumber。
它有init ...和number ...方法,它们采用布尔值,就像整数一样。等等。
// 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
答案 1 :(得分:47)
自Apple LLVM Compiler 4.0
dictionary[@"key1"] = @(boolValue);
dictionary[@"key2"] = @YES;
语法将BOOL
转换为NSNumber
,NSDictionary
可接受。{/ p>
答案 2 :(得分:16)
如果您将其声明为文字而且使用的是clang v3.1或更高版本,则应将@NO / @YES声明为文字。 E.g。
NSMutableDictionary* foo = [@{ @"key": @NO } mutableCopy];
foo[@"bar"] = @YES;
有关详情:
答案 3 :(得分:2)
正如jcampbell1指出的,现在你可以使用NSNumbers的文字语法:
NSDictionary *data = @{
// when you always pass same value
@"someKey" : @YES
// if you want to pass some boolean variable
@"anotherKey" : @(someVariable)
};
答案 4 :(得分:-2)
试试这个:
@items.group("created_at").count.map {|k,v| {k.strftime("%b %d, %Y") => v }}
输出如下:
对于' Pratik '
,布尔值为 TRUE 对于' Sachin ' ,布尔值为 FALSE