Это возможно с NSDictionary?Или я должен использовать что-то еще? - PullRequest
0 голосов
/ 19 августа 2010

Я пытаюсь создать массив текстовых строк, и я хочу выбрать случайную текстовую строку из этого массива, что я обычно мог бы легко сделать с массивом.Тем не менее, я также хотел бы иметь возможность распределить их по категориям, и когда я выбираю случайную, я хотел бы знать, к какой категории она относится, и делать с ней что-то другое, что определяется категорией, в которой она находилась. Iдумал, что я мог бы использовать ключи в NSDictionary для определения категорий, как при установке всех записей в категории, чтобы иметь тот же ключ.Но тогда я не знаю, как я мог получить случайный из этого словаря, а затем узнать, что это был за ключ.Я никогда не использовал NSDictionary, поэтому я мало что знаю об этом, так что, возможно, то, что я только что сказал, не имеет никакого смысла.

Возможно также, что я подхожу к этому совершенно неправильно, так что еслиу вас есть другие предложения относительно того, как сделать то, что я описал, я был бы открыт для этого, и довольно подробный кодовый ответ был бы наилучшим, если это возможно.

1 Ответ

0 голосов
/ 19 августа 2010

Я бы просто заполнил массив словарями, т.е.

{
  { category = Animals,
    name = Cat },
  { category = Vehicles,
    name = Helicopter },
  { category = Foods
    name = Pie },
  { category = Animals,
    name = Zebra }
}

, а затем случайным образом выбрать из этого массива.

Для программного примера:

theArray = [NSArray arrayWithObjects:[NSDictionary dictionaryWithObjectsAndKeys:@"Animals", @"category", @"Cat", @"name", nil],
                                     [NSDictionary dictionaryWithObjectsAndKeys:@"Vehicles", @"category", @"Helicopter", @"name", nil],
                                     // ...
                                     [NSDictionary dictionaryWithObjectsAndKeys:@"Animals", @"category", @"Zebra", @"name", nil],
                                     nil];

// ...

randomDict = [theArray objectAtIndex:(rand() % [theArray count])];
NSString *name = [randomDict objectForKey:@"name"];
NSString *category = [randomDict objectForKey:@"category"];
...