Доступ к элементам массива, которые являются объектами в NSDictionary

#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 «).