Tamsayılar için kullanırdım NSNumber
. Ama EVET ve HAYIR nesneler değil sanırım. Afaik Sadece bir nesneye nesne ekleyebilirim NSDictionary
, değil mi?
Booleanlar için herhangi bir sarmalayıcı sınıfı bulamadım. Var mı?
Tamsayılar için kullanırdım NSNumber
. Ama EVET ve HAYIR nesneler değil sanırım. Afaik Sadece bir nesneye nesne ekleyebilirim NSDictionary
, değil mi?
Booleanlar için herhangi bir sarmalayıcı sınıfı bulamadım. Var mı?
Yanıtlar:
NSNumber kullanırsınız.
Init ... ve number ... boolean alan yöntemleri vardır, tıpkı tamsayılar gibi.
Gönderen NSNumber sınıf referansı :
// Creates and returns an NSNumber object containing a
// given value, treating it as a BOOL.
+ (NSNumber *)numberWithBool:(BOOL)value
ve:
// Returns an NSNumber object initialized to contain a
// given value, treated as a BOOL.
- (id)initWithBool:(BOOL)value
ve:
// Returns the receiver’s value as a BOOL.
- (BOOL)boolValue
NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], @"someKey", nil];
@YES
ile aynı[NSNumber numberWithBool:YES]
Eğer bunu birebir olarak ilan ediyorsanız ve clang v3.1 veya üstünü kullanıyorsanız, bunu birebir olarak ilan ediyorsanız @NO / @YES kullanmalısınız. Örneğin
NSMutableDictionary* foo = [@{ @"key": @NO } mutableCopy];
foo[@"bar"] = @YES;
Bununla ilgili daha fazla bilgi için:
NSDictionary
, bir değil , yalnızca bir oluşturur NSMutableDictionary
. Değişebilir @YES
olmadığı foo[@"bar"]
için atama yapmak mümkün @{ @"key": @NO }
değildir.
Jcampbell1'in belirttiği gibi , artık NSNumbers için değişmez sözdizimini kullanabilirsiniz:
NSDictionary *data = @{
// when you always pass same value
@"someKey" : @YES
// if you want to pass some boolean variable
@"anotherKey" : @(someVariable)
};
Bunu dene:
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'");
}
Çıktı aşağıdaki gibi olacaktır:
Boole ise DOĞRU 'için ratik '
Boole, ' Sachin için YANLIŞ '
[NSNumber numberWithBool:NO]
ve [NSNumber numberWithBool:YES]
.