NSDictionary всегда показывает ноль - PullRequest
0 голосов
/ 11 июля 2011

У меня проблема с инициализацией nsdictionary и добавлением его в массив. Я попробовал два подхода, но потерпел неудачу в обоих. Мой словарь всегда нулевой.

Appoach1:

NSMutableDictionary *Data =[[NSMutableDictionary alloc] initWithObjectsAndKeys:@"1",@"State_Name",@"2",@"Name",@"3",@"Address",@"4",@"Ph", nil];// initialized in viewdidload


-(void)find:(NSInteger)Item{


        switch (Item) {
        case 0:

            [Data setValue:string forKey:@"State_Name"];
            break;
        case 1:
            [Data setValue:string forKey:@"Name"];
            break;
        case 2:
            [Data setValue:string forKey:@"TAddress"];
            break;
        case 3:
            [Data setValue:string forKey:@"Ph"];
            break;
        default:
            break;
    }         
}

Approach2:

NSMutableDictionary *Data =[[NSMutableDictionary alloc] initWithObjectsAndKeys:str1,@"State_Name",str2,@"Name",str3,@"Address",str4,@"Ph", nil];

Может кто-нибудь сказать, что не так с этим кодом. Я неправильно использую nsdictionary?

Спасибо

Ответы [ 3 ]

2 голосов
/ 11 июля 2011

Я выполнил твой код Какие изменения вы должны сделать, это: - в вашем .h файле напишите: -

NSMutableDictionary *Data;

в вашем файле .m напишите: -

Data =[[NSMutableDictionary alloc] initWithObjectsAndKeys:@"1",@"State_Name",@"2",@"Name",@"3",@"Address",@"4",@"Ph", nil];// initialized in viewdidload
1 голос
/ 11 июля 2011

Код выглядит правильно. Я думаю, string ноль. setValue:forKey: разрешает ноль (в свою очередь удаляет существующий объект).
попробуйте setObject:forKey:, это вызовет исключение, если значение (строка) равно нулю, или проверьте, если строка равно нулю ...

0 голосов
/ 11 июля 2011

К первому подходу: что именно является вашим ключом и какова ваша ценность в инициализаторе?Мне кажется, вы перепутали порядок.

Кроме того: вы помещаете строки в словарь, но ссылаетесь на nsinteger в вашем переключателе.Вы делаете преобразование где-то между?

...