2009-03-15 4 views
3

Я изо всех сил пытаюсь создать массив ints в объективе c.Как я могу создать массив из ints

так, как я хотел бы сделать это Javascript будет:

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

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

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

ответ

4

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

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

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]]]; 
} 
+0

длину не нужно менять ... , но мне нужно иметь возможность изменять массив, могу ли я это сделать? также как я могу получить длину этого массива? [arr count] не работает –

+0

Вы можете также использовать NSArray и друзей для проверки длины, границ и т. д. –

+0

Длина массива sizeof (arr)/sizeof (arr [0]). Это стандартный механизм C для нахождения длины статического массива – Alnitak

2

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

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

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

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

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

0

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

В основном для NSMutableArray вы просто инициализировать его следующим образом:

myArray = [[NSMutableArray alloc] init]; 

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

Удачи вам!

PS: Ссылка на класс Хэнка - хорошее начальное место.

+0

очень полезно, спасибо. –

0

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

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