#objective-c #nsarray #nsdictionary #elements
#objective-c #nsarray #nsdictionary #элемент
Вопрос:
У меня возникли некоторые проблемы с выяснением, возможно ли получить доступ к элементам массива, который был установлен в качестве объекта строкового ключа в словаре. Так, например, если бы у меня была настройка, как показано ниже, с каждым массивом, предоставляющим мне список книг и словарные ключи, представляющие категории книг:
NSArray * list1= @[@"Book1",@"Book2",@"Book3"];
NSArray * list2= @[@"Book4",@"Book5",@"Book6"];
NSArray * list3= @[@"Book7",@"Book8",@"Book9"];
NSDictionary * libraryDict = @{@"category1": list1,@"category2":list2, @"category3":list3};
Как мне получить доступ к отдельным элементам массива через словарь? Возможно ли это?
Что я хотел бы надеяться сделать, так это выбрать случайную запись для списков книг после выбора ключа. Итак, если пользователь решил, что ему нужна случайная рекомендация книги из категории 1, тогда я мог бы сгенерировать случайный выбор из массива list1.
Я только начинаю с Objective C, поэтому прошу прощения, если это вопрос n00b.
Ответ №1:
Да, это возможно,
Например. Для выборки массива list1, как показано ниже:
NSLog(@"%@",[libraryDict objectForKey:category1]);
Если вы хотите получить доступ к отдельному элементу category1, попробуйте следующее:
for(NSString str in [libraryDict objectForKey:category1])
{
NSLog(@"%@", str);
}
Комментарии:
1. Теперь это отобразит все элементы в массиве category1, и с этим у меня нет проблем. Но как мне получить доступ к отдельным элементам в category1?
Ответ №2:
Вы можете написать :
NSArray *value = (NSArray *)libraryDict[@"category1"];
Это вернет значение, связанное с ключом « @"category1"
» (в вашем случае, NSArray « list1
«).