Nah, untuk integer yang akan saya gunakan NSNumber
. Tapi YA dan TIDAK bukanlah objek, kurasa. Afaik saya hanya bisa menambahkan objek ke sebuah NSDictionary
, kan?
Saya tidak dapat menemukan kelas pembungkus untuk boolean. Apakah ada?
Nah, untuk integer yang akan saya gunakan NSNumber
. Tapi YA dan TIDAK bukanlah objek, kurasa. Afaik saya hanya bisa menambahkan objek ke sebuah NSDictionary
, kan?
Saya tidak dapat menemukan kelas pembungkus untuk boolean. Apakah ada?
Jawaban:
Anda menggunakan NSNumber.
Ia memiliki init ... dan number ... metode yang mengambil boolean, seperti halnya integer dan seterusnya.
Dari referensi kelas NSNumber :
// Creates and returns an NSNumber object containing a
// given value, treating it as a BOOL.
+ (NSNumber *)numberWithBool:(BOOL)value
dan:
// Returns an NSNumber object initialized to contain a
// given value, treated as a BOOL.
- (id)initWithBool:(BOOL)value
dan:
// Returns the receiver’s value as a BOOL.
- (BOOL)boolValue
NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], @"someKey", nil];
@YES
adalah sama dengan[NSNumber numberWithBool:YES]
Jika Anda mendeklarasikannya sebagai literal dan menggunakan clang v3.1 atau yang lebih baru, Anda harus menggunakan @NO / @YES jika Anda mendeklarasikannya sebagai literal. Misalnya
NSMutableDictionary* foo = [@{ @"key": @NO } mutableCopy];
foo[@"bar"] = @YES;
Untuk info lebih lanjut tentang itu:
NSDictionary
, bukan NSMutableDictionary
. Jadi penugasan @YES
ke foo[@"bar"]
tidak mungkin karena @{ @"key": @NO }
tidak bisa diubah.
Seperti yang ditunjukkan jcampbell1 , sekarang Anda dapat menggunakan sintaks literal untuk NSNumbers:
NSDictionary *data = @{
// when you always pass same value
@"someKey" : @YES
// if you want to pass some boolean variable
@"anotherKey" : @(someVariable)
};
Coba ini:
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'");
}
Outputnya adalah sebagai berikut:
Boolean BENAR untuk ' Pratik '
Boolean SALAH untuk ' Sachin '
[NSNumber numberWithBool:NO]
dan [NSNumber numberWithBool:YES]
.