Как я могу создать массив целых - PullRequest
3 голосов
/ 15 марта 2009

Я изо всех сил пытаюсь создать массив целых чисел в цели c.

то, как я это сделал бы, это был бы javascript:

arr = new Array ( 1, 2, 3, 4, 3, 2, 2 );

Мне нужно использовать NSMutableArray, так как значения должны быть обновлены (это карта тайлов для игры).

Как я могу это сделать?

Ответы [ 4 ]

4 голосов
/ 15 марта 2009

Нужно ли массиву менять длину?

Если нет, то почему бы не использовать обычный массив целых чисел:

int arr[] = { 1, 2, 3, 4, 3, 2, 2};

Обратите внимание, что NSArray (или его подкласс) изначально не содержит int типов, необходимо создать объект NSNumber.

Если вам действительно нужен массив в стиле Objective-C, используйте это:

int vals[] = { 1, 2, 3, 4, 3, 2, 2};  // you still need this
int n = sizeof(vals) / sizeof(vals[0]);

[NSMutableArray* array = [[NSMutableArray alloc] initWithCapacity:n];
for (int i = 0; i < n; ++i) {
    [array addObject: [NSNumber numberWithInt:vals[i]]];
}
2 голосов
/ 15 марта 2009

Для NSMutableArray (хотя массив C-стиля может быть предпочтительнее, как предложено Alnitak), вам нужно сделать что-то вроде этого:

NSMutableArray *array = [NSMutableArray arrayWithObjects: [NSNumber numberWithInt: 1], [NSNumber numberWithInt:2], nil];

(Вы можете поместить столько, сколько хотите в этот конструктор, просто разделите их запятыми и закончите nil.)

Вы также можете создать пустой массив ([NSMutableArray array]), а затем заполнить его целыми числами, используя [array addObject:[NSNumber numberWithInt:1]].

Если вам нужна 2D-версия, посмотрите здесь .

0 голосов
/ 21 февраля 2014

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

  • Не весь код, который вы пишете, является target-c.
  • Вы можете (и часто должны) использовать другие языки программирования, в частности C.
  • "Нормальный массив" Алнитака - это массив Си. Он отлично подходит для хранения информации с примитивными типами данных.
  • Если вы хотите сохранить объекты в вашем массиве, вы используете NSArray. Эта функция недоступна в C. Мы знаем это сразу, потому что она начинается с «NS» (кстати, это означает «Следующий шаг»).
0 голосов
/ 15 марта 2009

NSMutableArray может содержать только объекты Какао, которые наследуются от NSObject (т. Е. Классы Apple и ваши).

В основном для NSMutableArray вы просто запускаете его так:

myArray = [[NSMutableArray alloc] init];

, а затем добавляйте / удаляйте объекты по мере необходимости.

Удачи!

PS: Ссылка на класс Хэнка - хорошая отправная точка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...