Создание массива целых чисел в iOS

Если вы хотите создать массив целых чисел, можете ли вы использовать NSInteger? Нужно ли использовать NSNumber? Если да, то почему?

7 Solutions collect form web for “Создание массива целых чисел в iOS”

Вы можете использовать простой старый массив C:

NSInteger myIntegers[40]; for (NSInteger i = 0; i < 40; i++) myIntegers[i] = i; // to get one of them: NSLog (@"The 4th integer is: %d", myIntegers[3]); 

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

 NSMutableArray *myIntegers = [NSMutableArray array]; for (NSInteger i = 0; i < 40; i++) [myIntegers addObject:[NSNumber numberWithInteger:i]]; // to get one of them: NSLog (@"The 4th integer is: %@", [myIntegers objectAtIndex:3]); // or NSLog (@"The 4th integer is: %d", [[myIntegers objectAtIndex:3] integerValue]); 

C массив:

 NSInteger array[6] = {1, 2, 3, 4, 5, 6}; 

Objective-C Array:

 NSArray *array = @[@1, @2, @3, @4, @5, @6]; // numeric values must in that case be wrapped into NSNumbers 

Swift Array:

 var array = [1, 2, 3, 4, 5, 6] 

Это тоже верно:

 var array = Array(1...10) 

NB: массивы строго типизированы в Swift; в этом случае компилятор выводит из содержимого, что массив представляет собой массив целых чисел. Вы также можете использовать этот синтаксис явного типа:

 var array: [Int] = [1, 2, 3, 4, 5, 6] 

Если вам нужен массив парных разрядов, вы должны использовать:

 var array = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0] // implicit type-inference 

или:

 var array: [Double] = [1, 2, 3, 4, 5, 6] // explicit type 

Если вы хотите использовать NSArray, вам нужен класс Objective-C, то есть требование NSNumber.

Тем не менее, Obj-C по-прежнему C, поэтому вы можете использовать обычные C-массивы и использовать регулярные ints вместо NSNumbers, если вам нужно.

Вы можете использовать CFArray вместо NSArray. Вот статья, объясняющая, как это сделать.

 CFMutableArrayRef ar = CFArrayCreateMutable(NULL, 0, NULL); for (NSUInteger i = 0; i < 1000; i++) { CFArrayAppendValue(ar, (void*)i); } CFRelease(ar); /* Releasing the array */ 

То же самое относится и к версии CoreFoundation других контейнеров.

Я создал простую обертку Objective C вокруг старого старого массива C, который будет использоваться более удобно: https://gist.github.com/4705733

Если порядок ваших целых чисел не требуется, и если существуют только уникальные значения

вы также можете использовать NSIndexSet или NSMutableIndexSet. Вы сможете легко добавлять и удалять целые числа или проверять, содержит ли ваш массив целое число с

 - (void)addIndex:(NSUInteger)index - (void)removeIndex:(NSUInteger)index - (BOOL)containsIndexes:(NSIndexSet *)indexSet 

Подробнее см. Документацию .

Я думаю, что намного проще использовать NSNumbers. Это все, что вам нужно сделать:

 NSNumber *myNum1 = [NSNumber numberWithInt:myNsIntValue1]; NSNumber *myNum2 = [NSNumber numberWithInt:myNsIntValue2]; . . . NSArray *myArray = [NSArray arrayWithObjects: myNum1, myNum2, ..., nil]; 
  • Уведомления GCM push not recived
  • Проблема с "func observValueForKeyPath (keyPath: NSString, object: AnyObject, change: NSDictionary, context: Void)" в Swift
  • Окно поиска UISearchController Shift Down on Tap
  • Как загрузить файл в Alamofire 4 и сохранить в папке «Документы»?
  • UIImage не отображается с помощью Swift
  • Добавьте ограничения на кнопку в быстром (учебное пособие по iOS для Apple)
  • Как сделать динамическую высоту ячейки UICollectionview?
  • Пример обработки JSON с SwiftyJSON
  • Как выполнить аутентификацию пользователя в SDK для Parse iOS с помощью OAuth?
  • UIButton останавливает прокрутку UIScrollView в Swift
  • UITableViewCell Reorder Control - установить backgroundColor
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.