NSMutableDictionary не добавляет элементы - PullRequest
0 голосов
/ 16 марта 2012

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

//.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!");
}

Ответы [ 3 ]

4 голосов
/ 16 марта 2012

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

[_descriptionsDictionary setObject:@"bar" forKey:@"foo"];
1 голос
/ 16 марта 2012
[_descriptionsDictionary allKeys] 

вернет массив ключей. Вот оно (@ "бар"). А из ссылки на класс NSArray сказано, что метод "содержитObject:"

Этот метод определяет, присутствует ли anObject в массиве, отправляя сообщение isEqual: каждому из объектов массива (и передавая значение anObject в качестве параметра каждому сообщению isEqual:).

В этом случае метод содержитObject: check

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

Результат ложен в этом случае. Вот почему вы получаете "Это не здесь!"

0 голосов
/ 16 марта 2012

попробуй

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

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

...