2010-07-05 3 views
1

Я хочу спросить о NSArray в Objective C.массив в Objective C (iPhone)

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

Следующая версия 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]; 

Спасибо очень много.

ответ

4

Вы должны использовать класс с именем 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

Используйте 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:

+1

Не сбивать ответ, а просто указывать: вы также можете просто написать 'NSArray * arrA = [arrB copy]'. – Chuck

+0

@Chuck: вопрос задан для «динамического массива», а '[arrB copy]' сделает другой NSArray, который не является динамическим. – Adrian

+1

Я не уверен, что означает «динамический», что побуждает вас протестовать. Все объекты Objective-C динамически разрешают сообщения и динамически печатаются. Если это просто означает «mutable», то это «NSMutableArray * arrA = [arrB mutableCopy]». – Chuck

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