当我想要运行一个方法时,如果我的数组中有一个或多个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;
}
}
}
答案 0 :(得分:2)
您需要更改一行:
if ([self.pressCountArray objectAtIndex:i >0]) {
为:
if ([[self.pressCountArray objectAtIndex:i] integerValue] > 0]) {
在您评估i > 0
之前只能1
或0
,然后使用它来获取对象之前。只要该对象不是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原理。