Массив в Objective C (iPhone) - PullRequest
1 голос
/ 05 июля 2010

Я хочу спросить о NSArray в цели C.

Я хочу создать динамический массив, так как я не знаю о размере массива.И я также хочу вставить некоторые данные в массив.Тем не менее, я не знаю, как decl, init и вставить элемент в массив.

Ниже приведена версия C ++.Я хочу создать пустой массив A и поместить все элементы массива в массив B в A.

// empty array

string arrA[] = new string();

// put the arrB into arrA

for(int i=0; i < arrB.length(); i++)

      arrA[i] = arrB[i];

Большое спасибо.

Ответы [ 2 ]

4 голосов
/ 05 июля 2010

Вы должны использовать класс с именем NSArray или NSMutableArray. Они похожи на std::vector, но несколько отличаются по своему использованию из-за того, как работает Objective-C.

// Immutable array (must be created with contents specified)
NSArray *strings = [NSArray arrayWithObjects:@"Hello", @", world!", nil];

// Mutable array (can be modified)
NSMutableArray *strings = [NSMutableArray array];
[strings addObject:@"Hello"];
[strings addObject:@", world!"];

Разница с объектами Objective-C NSArray заключается в том, что они могут брать любой тип объекта, если он является подклассом NSObject.

NSArray *array = [NSArray arrayWithObjects:@"A string", [NSNumber numberWithInt:1337], [NSDictionary dictionary]];

Для доступа к значениям вы должны использовать сообщение objectAtIndex:.

NSString *aString = [array objectAtIndex:10];
NSLog(aString);
2 голосов
/ 05 июля 2010

Используйте NSMutableArray.Если arrB является NSArray:

NSMutableArray *arrA = [[NSMutableArray alloc] init];

[arrA addObjectsFromArray: arrB];

Вот документация: http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSMutableArray_Class/Reference/Reference.html#//apple_ref/occ/instm/NSMutableArray/addObjectsFromArray:

...