0

だから、これは簡単ではないと思います...ここに行きます:2つの NSArrays があり、それぞれにいくつかのカスタムオブジェクトが含まれています(KVC準拠..これが役立つかもしれません)。オブジェクトには、最初の配列に 2 つのプロパティがあります (array1 と呼びましょう)。このオブジェクトは NSNumbers です。2 番目の配列では、1 つのオブジェクトは NSNumber で、もう 1 つは NSDate です... 2 部構成の質問は次のとおりです。

1) 特定の範囲内の NSNumbers の 1 つを持つすべてのオブジェクトを含む配列 1 から NSArray を取得するにはどうすればよいですか?

配列が [(1,1),(2,4),(2,12), (3,14)] であり、3 から 13 の間の 2 番目の値を持つ配列が必要であるとしましょう (オブジェクト 2 とこの場合は 3) ..そして、はい、配列は 2 番目の変数で順序付けられます ...

2) 2 番目の配列では、間隔内の日付を持つオブジェクトが必要ですが、この間隔をより小さな間隔でサブ分割する必要があり、返された配列には、最初の間隔からの数値オブジェクトの合計を持つこの新しいオブジェクトが含まれます。 ....私が明確でない場合に備えて、例を示します....

初期配列は [(2,January 12),(5,January 13),(20,march 15),(10, march 20),(26,April 28),(20,may 6),(30, 7月4日)]; そして、2 月 1 日から 5 月 30 日までの間隔が必要です。 )];

この最初の日付と数値の配列は変更されません...そしてサブインターバルの分割時間枠は常に次のようになります: インターバルの開始から最後のインターバルの終了まで ... (1 月の最初の日 (真夜中) から3 月の最終日、または午後 1:00 の最初の 1 秒から午後 3:59:59.999 まで)

これらの配列には最大 10,000 個のオブジェクトがある可能性があるため、ソリューションが効率的であれば素晴らしいことです...そして、この getRangeWithInterval 関数は 1 秒に複数回呼び出される可能性があります (iPhone 3GS で実行する必要があります...そうでないことを願っています)求めすぎ)。:)

4

1 に答える 1

1

最初の問題は、NSPredicateを使用することで解決できます。
たとえば、オブジェクトの2番目のNSNumberプロパティが呼び出された場合secondNumber

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"secondNumber >= 3 && secondNumber <= 13"];
NSArray *filteredArray = [array1 filteredArrayUsingPredicate:predicate];

それがコンパイルされることを願っています-私はXCodeなしでそれを書きました。

2番目の問題は少し難しいように聞こえます。
私はそれについて考えてみましょう...

于 2012-11-18T20:46:04.320 に答える