0

配列を 4 つの要素の個々の配列に分割しようとしています。最後の配列にはリマインダーが含まれます。たとえば、メイン配列の長さプロパティが 10 の場合、3 つのサブ配列が作成されます。2 つは 4 つの要素で構成され、1 つは 2 つの要素で構成されます。

私が今持っているコードは次のようになります。

NSMutableArray *mainMutableArray = [NSMutableArray arrayWithObjects:@"First", @"Second", @"Third", @"Fourth", @"Fifth", @"Sixth", @"Seventh", @"Eighth", nil];
NSMutableArray *mutableArrayOfSubarrays = [NSMutableArray array];

int length = mainMutableArray.count / 4;
int location = 0;

for (int i = 0; i < length; i++)
{
    [mutableArrayOfSubarrays addObject:[mainMutableArray subarrayWithRange:NSMakeRange(location, 4)]];
    location += 4;
}

もちろん、これはリマインダーが 0 の場合にのみ機能します。

どんな助けでも大歓迎です。

4

3 に答える 3

2

わかりました、ここに行きます:

int length = mainMutableArray.count;

for (int location = 0; location < length; location+=4)
{
    unsigned int Size=length-location;
    if (Size>4) Size=4;
    [mutableArrayOfSubarrays addObject:[mainMutableArray subarrayWithRange:NSMakeRange(location, Size)]];
}
于 2012-07-15T17:07:41.693 に答える
1

ループを使用するwhileと、実際に何をしようとしているのかを条件に記述させることができます。

NSUInteger length = [mainMutableArray count];
NSUInteger location = 0;
// Until the location is less than four away from the end
while( location <= (length - 4) ){

    [mutableArrayOfSubarrays addObject:[mainMutableArray subarrayWithRange:NSMakeRange(location, 4)]];
    location += 4;
}

// Pick up the remainder, if any
if( location != length ){
    [mutableArrayOfSubarrays addObject:[mainMutableArray subarrayWithRange:NSMakeRange(location, length-location)]];
}
于 2012-07-15T17:21:41.790 に答える
0

length*4からにループしてmainMutableArray.count、配列の残りを取得します。

于 2012-07-15T17:09:00.193 に答える