#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:
.