2011-01-15 3 views
1

Мне интересно, как решить следующую проблему: я хочу получить доступ к одному значению на основе пары значений, например, например. для значений 0 и 1 я хочу получить 3, для 4 и 5 я хочу получить 2 и т. д. Я думал о объявлении трехмерного массива. Есть ли лучший способ достичь этого? Если нет, как объявить 3d массив в ObjectiveC?Как объявить и использовать 3-мерный массив в ObjectiveC?

Спасибо!

ответ

2

Если вам нужны результаты, основанные на парах значений (а не на тройках), то вам нужен 2D-массив.

Обычно 2D-массивы представляют собой массивы массивов. Если вы хотите использовать объект NSArray Obj-C, тогда вы бы просто сделать что-то вроде этого:

NSArray* yCoord1 = [NSArray arrayWithObjects:@"oneValue", @"secondValue", nil]; 
NSArray* yCoord2 = [NSArray arrayWithObject:@"thirdValue"]; 

NSArray* array = [NSArray arrayWithObjects:yCoord1,yCoord2,nil]; 

Затем, чтобы получить доступ к массиву:

NSUInteger xCoord = 0; 
NSUInteger yCoord = 1; 

[[array objectAtIndex:xCoord] objectAtIndex:yCoord]; //Result: @"secondValue" 

Также можно использовать простые массивы C в этом случае; google "2D C ​​массивы" для тонны учебных пособий, если вы этого предпочтете.

1

Если вы собираетесь иметь значение для большинства или всех возможных пар и сохраняете только целые значения (как кажется из вашего примера), реальный массив C может наилучшим образом удовлетворить ваши потребности, поскольку вы можете быстро индексировать его 3D-массив, чтобы получить то, что вы ищете.

Если это редкий набор данных, я могу увидеть что-то вроде того, что вы делаете, лучше, если вы объедините свои два ключевых значения в нечто вроде «1-Firstval; 2-SecondVal» и удерживайте числа, которые вы ищет в NSDictionary. Затем вы получаете быстрый поиск без использования большого количества памяти.

+0

Спасибо! Ваш ответ правильный и очень хороший, но ответ andyvn22 лучше соответствует моим потребностям. – Jakub

Смежные вопросы