2010-05-26 4 views
1

Я хотел бы создать NSDictionary (или что-то подобное), которое имеет два ключа на каждое значение. Это будет для изучения английского/испанского слова, где:NSDictionary: два ключа на стоимость?

  • Каждое значение представляет собой массив, содержащий все сопряженные глаголы на английском и испанском языках.
  • Каждый ключей (два) содержит как английский инфинитив (например, «быть», «идти») и испанский инфинитив

Таким образом, я могу посмотреть слово вверх, независимо от языка, основанного на значения, имеющие два ключа на одно значение.

Вот пример:

  • клавиши: "Хотеть" или "querer"
  • значения: [ "хочу", "хочу", "хочет", "хочу", "хочу", «Quiero», «quieres», «quiere», «queremos», «quieren»]
+0

Кроме того, если есть лучший способ сделать это, чем при использовании NSDictionary, пожалуйста, дайте мне знать, как это не установлено в камне NSDictionary. – Derek

ответ

3

Просто добавьте массив с сопряженными глаголами дважды для двух разных ключей, то значение только указатель на массив , поэтому накладных расходов очень мало. Когда вы извлекаете значение для «want» или «querer», вы фактически получаете тот же самый массив, который должен быть тем, что вы хотите.

С уважением, Sebastian Мекленбурге

+0

Спасибо Себастьян. Означает ли это, что мне придется создавать отдельные переменные массива для каждого из глаголов (например, NSArray * want = [[NSArray alloc] initWithObject ... и т. Д.) Или я могу просто распределить массив дважды в словаре и он будет использовать только 1 место в памяти? – Derek

+1

@Derek: вам не нужно создавать отдельные переменные, и вам определенно не следует создавать два отдельных массива. Вы добавляете массив в словарь один раз с помощью английского ключа и снова с помощью испанского ключа. Тот же массив оба раза. Вы можете сделать это с той же переменной. – Chuck

+0

@Derek Chuck прав, не выделяйте массив дважды, сделайте что-то вроде: NSArray * want = [[NSArray alloc] initWithObject ...]; [dict setObject: want forKey: @ "want"]; [dict setObject: want forKey: @ "querer"]; (Извините, комментарии, похоже, не поддерживают теги кода :-) –