-2

ここでブール値の配列をテストするために同様の質問をしましたが、値が整数値になり、それらのいずれかが正であるかどうかを確認したいので、変更しました。

たとえば、以下のようなループで 10 個の新しいオブジェクトを追加すると、ある時点で一部が変更される可能性があり、テストを行う必要があります。int を取得できる限り、NSNumber を使用しない可能性があります。

// I create an array like
NSMutableArray *MyArray = [[NSMutableArray alloc]init];
for (int count = 0; count < 10; count++)
{
    [MyArray addObject:[NSNumber numberWithInt:0]];
}


// At some point I change a value or two
[MyArray replaceObjectAtIndex:3 withObject:[NSNumber numberWithInt:5]];
....
....
....
....
[MyArray replaceObjectAtIndex:3 withObject:[NSNumber numberWithInt:7]];


if([MyArray containsPositiveObject])
{
    // Get the integer
    int MyValue = [MyArray[4]integerValue];

}

編集

私はこれを試してみましたが、うまくいきましたが、より速い方法があるかどうか疑問に思いました.

if([self containsPositiveValue:selectedItems]) 
{
     // Do my stuff
}

その後

-(bool)containsPositiveValue:(NSArray *)numberArray
{
    bool result = NO;

    for (NSNumber *obj in numberArray)
    {
        if([obj integerValue])
        {
            result = YES;
            break;
        }
    }

    return result;
}
4

2 に答える 2

0

これを試して。

NSArray *array = @[ @(-1) , @(-3) , @(0) , @(-4) , @(2) , @(-1) ];  // zero is not positvie or negitive

NSArray *newArray = [array filteredArrayUsingPredicate: [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
    return ( [evaluatedObject isKindOfClass:[NSNumber class]] && ([evaluatedObject integerValue] > 0) );
    return NO;
}]];

if (newArray.count)
{
    NSLog(@"There are positive values");
}
else
{
    NSLog(@"There are no positive values") ;
}
于 2013-10-24T16:14:56.710 に答える