NSNumber
ดีสำหรับจำนวนเต็มผมจะใช้ แต่ใช่และไม่ใช่ไม่ใช่สิ่งของฉันเดา Afaik ฉันสามารถเพิ่มวัตถุใน an ได้NSDictionary
เท่านั้นใช่ไหม?
ฉันไม่พบคลาส Wrapper สำหรับบูลีน มีผู้ใด?
NSNumber
ดีสำหรับจำนวนเต็มผมจะใช้ แต่ใช่และไม่ใช่ไม่ใช่สิ่งของฉันเดา Afaik ฉันสามารถเพิ่มวัตถุใน an ได้NSDictionary
เท่านั้นใช่ไหม?
ฉันไม่พบคลาส Wrapper สำหรับบูลีน มีผู้ใด?
คำตอบ:
คุณใช้ NSNumber
มันมีวิธีการ init ... และ number ... ที่ใช้บูลีนเช่นเดียวกับจำนวนเต็มและอื่น ๆ
จากการอ้างอิงคลาส 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
NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], @"someKey", nil];
@YES
เหมือนกับ[NSNumber numberWithBool:YES]
ไวยากรณ์ใหม่ตั้งแต่ 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;
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับสิ่งนั้น:
NSDictionary
ไม่ใช่NSMutableDictionary
ไฟล์. ดังนั้นการมอบหมาย@YES
ให้foo[@"bar"]
เป็นไปไม่ได้เนื่องจาก@{ @"key": @NO }
ไม่ได้แน่นอน
ดังที่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 '
บูลีนเป็นเท็จสำหรับ ' Sachin '
[NSNumber numberWithBool:NO]
และ[NSNumber numberWithBool:YES]
.