对于循环 - 在NSMutableArray中显示高于零的int

时间:2014-07-29 19:48:46

标签: ios objective-c nsarray

当我想要运行一个方法时,如果我的数组中有一个或多个int大于零,那么它现在所做的只是显示数组中的第一个值,并不重要该值大于零。

任何帮助将不胜感激,我的代码在下面.....

-(void)setUpPressedCount{
    self.presscount1 = 0;
    [self.pressCountArray addObject:[NSNumber numberWithInt:self.presscount1]];
    self.presscount2 = 2;
    [self.pressCountArray addObject:[NSNumber numberWithInt:self.presscount2]];
    self.presscount3 = 0;
    [self.pressCountArray addObject:[NSNumber numberWithInt:self.presscount3]];
    self.presscount4 = 0;
    [self.pressCountArray addObject:[NSNumber numberWithInt:self.presscount4]];
    self.presscount5 = 0;
}

-(void)performAction{
    for (NSInteger i = 0; i < [self.pressCountArray count]; i++){
        if ([self.pressCountArray objectAtIndex:i >0]) {
            NSLog (@"above zero presscount: %@", [self.pressCountArray objectAtIndex:i]);
            return;
        }            
    }
}

4 个答案:

答案 0 :(得分:2)

您需要更改一行:

if ([self.pressCountArray objectAtIndex:i >0]) {

为:

if ([[self.pressCountArray objectAtIndex:i] integerValue] > 0]) {

在您评估i > 0之前只能10,然后使用它来获取对象之前。只要该对象不是null,就会运行if语句。

答案 1 :(得分:0)

此声明不合适if ([self.pressCountArray objectAtIndex:i >0]) {请改用

-(void)performAction{

for (NSInteger i = 0; i < [self.pressCountArray count]; i++){


    if ([[self.pressCountArray objectAtIndex:i] integerValue]>0) {
        NSLog (@"above zero presscount: %@", [self.pressCountArray objectAtIndex:i]);
        return;
    }            
}

}

答案 2 :(得分:0)

更改你的&#34;如果&#34;声明:

if ([[self.pressCountArray objectAtIndex:i] intValue] > 0)

答案 3 :(得分:0)

-(void)setUpPressedCount{
    self.presscount1 = 0;
    [self.pressCountArray addObject:@(self.presscount1)];
    self.presscount2 = 2;
    [self.pressCountArray addObject:@(self.presscount2)];
    self.presscount3 = 0;
    [self.pressCountArray addObject:@(self.presscount3)];
    self.presscount4 = 0;
    [self.pressCountArray addObject:@(self.presscount4)];
    self.presscount5 = 0;
}

-(void)performAction{
    for (NSNumber *num in self.pressCountArray) {
        if (num.integerValue > 0) NSLog (@"above zero presscount: %@", [self.pressCountArray objectAtIndex:i]);
    }
}

您的代码存在一些问题。在Objective-C 2.0中,您可以使用数字文字而不是之前使用的数字文字。

NSNumber是一个对象,无法使用标准比较运算符进行比较。 integerValue方法会将NSNumber中包含的值作为NSInteger

我建议你阅读指针和一些基本的OOP原理。