1

与えられたのはオブジェクトを持つ NSArray で、それぞれが NSNumbers として格納された float を持つ NSArray を持っています。

float 値に基づいてメイン配列をフィルタリングする NSPredicate を作成しようとしています。たとえば、サブ配列の float の 1 つとして 234.6 +/- 0.8 の値を持つすべてのオブジェクトを取得するにはどうすればよいでしょうか?

float の 1 次元 NSArray に対して、次のようなことができます。

float targetFloat = 234.6;
float delta = 0.8;

filterPredicate = [NSPredicate predicateWithFormat: @"myFloat > %f AND myFloat < %f", (targetFloat - delta),  (targetFloat + delta)];
filteredArray = [originalArray filteredArrayUsingPredicate: filterPredicate];

しかし、NSNumbers を使用して 2D NSArray を変更するにはどうすればよいですか?

4

2 に答える 2

4

述語で「SELF[index]」を使用して、サブ配列の特定の要素にアクセスできます。次の述語は、最初の要素が指定された範囲内にあるすべてのサブ配列を検索します。

float lowValue = 1.5;
float hiValue = 2.5;
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF[0] > %f AND SELF[0] < %f", lowValue, hiValue];
NSArray *filtered = [array filteredArrayUsingPredicate:predicate];

指定された範囲内の任意の数値を含むサブ配列を検索する場合は、次を使用します

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY SELF BETWEEN %@", @[@(lowValue), @(hiValue)]];
于 2013-04-12T19:25:31.820 に答える