2012-03-16 3 views
0

Я не понимаю, почему он не может добавить элемент в мой словарь. В моей консоли я всегда получаю «Это не здесь!» Я разместил свой код нижеNSMutableDictionary не добавляет элементов

//.m 
#import "ExercisesViewController.h" 
#import "STATableViewController.h" 

@implementation ExercisesViewController 
@synthesize descriptionLabel = _descriptionLabel; 
@synthesize descriptionsDictionary = _descriptionsDictionary; 
@synthesize objName = _objName; 

- (void)viewDidLoad 
{  
[super viewDidLoad]; 
_descriptionsDictionary = [[NSMutableDictionary alloc]init]; 
[_descriptionsDictionary setObject:@"foo" forKey:@"bar"]; 

if([[_descriptionsDictionary allKeys] containsObject:@"foo"]) 
    NSLog(@"It's here!"); 
else 
    NSLog(@"It's not here!"); 
} 

ответ

4

Вы добавляете значение foo для ключа bar но затем проверять ключи для foo. Обратный ключ/значение, которое вы добавляете:

[_descriptionsDictionary setObject:@"bar" forKey:@"foo"]; 
+0

Да, это была моя собственная глупость, спасибо :) –

0

попробовать

if([[_descriptionsDictionary allKeys] containsObject:@"bar"]) { 
    NSLog(@"It's here!"); 
} 
else { 
    NSLog(@"It's not here!"); 
} 

AllKeys дает вам NSArray с ключами словаря, allValues ​​дает его записи

1
[_descriptionsDictionary allKeys] 

вернется массив ключей. Здесь он (@ "bar"). А из NSArray класса ссылки сказано, что метод, «containsObject:»

Этот метод определяет, является ли anObject присутствует в массиве, посылая IsEqual собой: сообщение для каждого из объектов массива (и переходя anObject как параметр для каждого isEqual: message).

В этом случае метод containsObject: проверяет

[@"bar" isEqual:@"foo"] 

В результате ложной в этом случае. Вот почему вы получаете «Это не здесь!»

Смежные вопросы