Восстановить значение в NSDictionary

#objective-c

#objective-c

Вопрос:

Я хочу восстановить значения, содержащиеся в NSDictionary. Я делаю это :

 MyCommon *pCommon = [MyCommon Singleton];
NSArray *result = pCommon.res; //res is define and retain in common.m. This is the array.
NSDictionary *dataItem = [result objectAtIndex:????];
  

я не знаю, что я могу поставить, чтобы заменить????

Спасибо

Комментарии:

1. С каким индексом находится ваш словарь?

2. Является result массивом NSDictionary?

3. Нужна дополнительная информация? Трудно понять, чего вы пытаетесь здесь достичь. objectAtIndex принимает значение NSUInteger.

4. Ваш вопрос заключается в том, как извлечь значения в NSDictionary, но ваш код извлекает значения (NSDictionary) из NSArray? Какой из них правильный «вопрос»?

Ответ №1:

В отличие от некоторых других языков, Objective-C проводит различие между массивами и словарями.

Массив — это коллекция, проиндексированная по номеру. Словарь — это коллекция, индексируемая объектами (обычно строками, но могут быть и другие типы).

Кроме того, Objective-C проводит различие между изменяемыми и неизменяемыми массивами и словарями. NSArray и NSDictionary не могут быть изменены после их создания. Если вам нужно добавить объекты в свою коллекцию, используйте вместо этого NSMutableArray и NSMutableDictionary .

 NSArray * myArray = [[NSArray alloc] initWithObjects: @"text1", @"text2", @"text3", nil];
// you can then access a member by using:
NSString * text = [myArray objectAtIndex: 0];

NSMutableDictionary * myDict = [[NSMutableDictionary alloc] init];
// add an object
[myDict setObject:@"text1" forKey:@"key1"];
[myDict setObject:@"text2" forKey:@"key2"];
// you can retrieve objects using:
text = [myDict objectForKey: @"key1"];

[myArray release];
[myDict release];
  

Ответ №2:

Ну, result это NSArray , а не NSDictionary an, поэтому просто укажите индекс интересующего вас элемента. Массивы индексируются целыми числами от нуля.

В случае, если ваш result является NSDictionary , а не NSArray an, используйте objectForKey: метод вместо objectAtIndex: .