如何向NSDictionary添加布尔值?

Tha*_*nks 112 iphone cocoa-touch objective-c uikit

好吧,对于整数我会用NSNumber.但是,我想,YES和NO不是对象.Afaik我只能添加对象NSDictionary,对吧?

我找不到布尔值的任何包装类.有没有?

har*_*rms 156

您使用NSNumber.

它有init ...和number ...方法,它们采用布尔值,就像整数一样,等等.

NSNumber类引用:

// Creates and returns an NSNumber object containing a 
// given value, treating it as a BOOL.
+ (NSNumber *)numberWithBool:(BOOL)value
Run Code Online (Sandbox Code Playgroud)

和:

// Returns an NSNumber object initialized to contain a
// given value, treated as a BOOL.
- (id)initWithBool:(BOOL)value
Run Code Online (Sandbox Code Playgroud)

和:

// Returns the receiver’s value as a BOOL.
- (BOOL)boolValue
Run Code Online (Sandbox Code Playgroud)

  • 值得指出的是,现在有一个NSNumbers的字面语法.`@ YES`与`[NSNumber numberWithBool:YES]`相同 (28认同)
  • @harms是对的.作为一个例子:`的NSDictionary*词典= [NSDictionary的dictionaryWithObjectsAndKeys:[NSNumber的numberWithBool:YES],@ "someKey",零];` (5认同)

Bri*_*ian 50

从那时起的新语法 Apple LLVM Compiler 4.0

dictionary[@"key1"] = @(boolValue);
dictionary[@"key2"] = @YES;
Run Code Online (Sandbox Code Playgroud)

语法转换BOOLNSNumber,可以接受NSDictionary.


sab*_*aba 16

如果您将其声明为文字,并且您使用的是clang v3.1或更高版本,则应将@NO/@YES用于声明为文字.例如

NSMutableDictionary* foo = [@{ @"key": @NO } mutableCopy];
foo[@"bar"] = @YES;
Run Code Online (Sandbox Code Playgroud)

有关更多信息:

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