2016-04-21 20 views
0

最大100個のオブジェクトの配列でしか動作できないメソッドがあります。配列の異なる部分で同じメソッドを複数回呼び出す

私は100以上のオブジェクトを持つ配列を持っていますが、このメソッドを複数回呼び出すと、100個以上のオブジェクトを持つ配列ではどのように動作しますか?

私は264のオブジェクトの配列を持っているとしましょう。

私はそうのような方法を3回呼び出すことができます。これは正常に動作します

[self doSomething:[arrayWithMoreThan100Objects subarrayWithRange:NSMakeRange(0, 100)]; 
[self doSomething:[arrayWithMoreThan100Objects subarrayWithRange:NSMakeRange(100, 100)]; 
[self doSomething:[arrayWithMoreThan100Objects subarrayWithRange:NSMakeRange(200, 64)]; 

、しかし、私はいつもこの方法は非常にこの手動で文句を言わない仕事を呼び出す処理する必要がある配列のサイズを知りません。

どうすればこの問題を回避できますか?

ありがとうございます!

+0

あなたは 'enumerateObjectsUsingBlock'のような意味ですか? – samiunn

答えて

3

ループを使用:

NSInteger increment = 100; 
for (NSInteger start = 0; start < arrayWithMoreThan100Objects.count; start += increment) { 
    NSInteger length = MIN(increment, arrayWithMoreThan100Objects.count - start); 
    NSRange range = NSMakeRange(start, length); 
    [self doSomething:[arrayWithMoreThan100Objects subarrayWithRange:range]; 
} 

アレイに残さ100未満のオブジェクトがある場合lengthの値が100以下の値のいずれかに設定されています。

+0

あなたの答えは、私が必要としていただけで完璧に動作します!あなたはコードにいくつかの説明を追加することができます、私は理解することができます。私はコピーして貼り付けたいだけではありません。ありがとう! –

+1

どの部分を明確にする必要がありますか?それは単純なループです。 – rmaddy

+0

100個のオブジェクトが残っていないと100個以上を追加しないとどのように知っているのか分かりませんでした。ありがとう、トン!非常にエレガントなソリューション。 –

関連する問題