Что такое простой способ разбить NSArray с 4000+ объектами в нем на несколько массивов с 30 объектами каждый?
Что такое простой способ разбить NSArray с 4000 объектами в нем на несколько массивов с 30 объектами?
Итак, прямо сейчас у меня есть материал NSArray *, где [stuff count] = 4133.
Я хочу создать новый массив, содержащий массивы из 30 объектов. Что такое хороший способ прокрутки, разбивка * материала на новые массивы с 30 объектами и размещение их внутри большего массива?
- iTunes Connect API
- Отправить уведомление в центр уведомлений о горном льве
- Почему NSError нуждается в двойной косвенности? (указатель на указатель)
- NSOperation на iPhone
- Что такое двойная звезда (например, NSError **)?
Очевидно, что последний массив не будет содержать 30 (он будет содержать остаток), но мне нужно правильно это обработать.
Имеют смысл? Сообщите мне, есть ли эффективный способ сделать это.
- SplitView как приложение Facebook на iPhone
- Как запустить UITableView на последней ячейке?
- Как добавить UIView над текущим UITableViewController
- Преобразование NSArray в NSDictionary
- Как resize NSImage
- Могу ли я передать блок как @selector с Objective-C?
- Проблема UITableView при использовании отдельного делегата / источника данных
- Содержимое HTML соответствует UIWebview без масштабирования
Сверху моей головы, что-то вроде (непроверено):
NSMutableArray *arrayOfArrays = [NSMutableArray array]; int itemsRemaining = [stuff count]; int j = 0; while(itemsRemaining) { NSRange range = NSMakeRange(j, MIN(30, itemsRemaining)); NSArray *subarray = [stuff subarrayWithRange:range]; [arrayOfArrays addObject:subarray]; itemsRemaining-=range.length; j+=range.length; }
MIN(30, i)
заботится о последнем массиве, который не обязательно будет содержать 30 элементов.
NSMutableArray *arrayOfArrays = [NSMutableArray array]; int batchSize = 30; for(int j = 0; j < [stuff count]; j += batchSize) { NSArray *subarray = [stuff subarrayWithRange:NSMakeRange(j, MIN(batchSize, [stuff count] - j))]; [arrayOfArrays addObject:subarray]; }
Преобразовал ответ @samvermette в SWIFT 3
var arrayOfArraySlices = [ArraySlice]() // array of array slices var itemsRemaining = orderArray.count var j = 0 while itemsRemaining > 0 { let range = NSRange(location: j, length: min(20, itemsRemaining)); let arraySlice = orderArray[range.location..