-2

我问了一个类似的问题来在这里测试一个布尔值数组,但现在我已经改变了它,所以这些值现在是整数值,我想看看它们中的任何一个是否为正。

例如,我在下面的循环中添加了 10 个新对象,然后在某些时候可能会发生变化,然后我需要进行测试。可能是我不使用 NSNumber,只要我能从中得到一个 int。

// 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 回答
0

当然,最简单的方法是:

NSArray * array = @[@(-1), @(-5), @(-5)];

for (NSNumber * number in array) {

    if (number.intValue > 0) {
        NSLog(@"Positive Values");

        // Add custom code here            

        break;
    }
}

然后,这将检查数组中是否至少有一项大于零,然后可以实现自定义代码。

我想这取决于您是否要在没有正值的情况下执行某些操作,如果存在则执行不同的操作?

你总是可以添加这样的东西:

NSArray * array = @[@(-1), @(-5), @(-5)];

NSInteger largestValue = 0;

for (NSNumber * number in array) {

    if (number.intValue > largestValue) {

        largestValue = number.intValue;
    }

    if (largestValue > 0) {
        break; 
    }    
}

if (largestValue > 0) {
    NSLog(@"Positive Value");
}
else {
    NSLog(@"All Negative Values");
}

无论如何,您希望它工作越复杂,它就会变得越复杂,但它应该非常简单

于 2014-03-13T04:31:02.307 回答