O que é uma maneira fácil de quebrar um NSArray com mais de 4000 objects em vários arrays com 30 objects cada?

O que é uma maneira fácil de quebrar um NSArray com 4000 objects em vários arrays com 30 objects cada?

Então, agora eu tenho um material NSArray * onde [o material conta] = 4133.

Eu quero fazer uma nova matriz que contém matrizes de 30 objects. O que é uma boa maneira de percorrer, dividir * material em novos arrays de 30 objects e colocá-los dentro de uma matriz maior?

Obviamente, o último array não terá 30 (ele terá o restante), mas eu preciso lidar com isso corretamente.

Faz sentido? Deixe-me saber se existe uma maneira eficiente de fazer isso.

No topo da minha cabeça, algo como (não testado):

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; } 

O MIN(30, i) cuida daquele último array que não terá necessariamente 30 itens nele.

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

Converteu a resposta de @samvermette para 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..