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];
@YESadalah 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 @YESke 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].