Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 获取二进制表达式(';id';和';id';)的无效操作数和错误的计算值_Ios_Objective C - Fatal编程技术网

Ios 获取二进制表达式(';id';和';id';)的无效操作数和错误的计算值

Ios 获取二进制表达式(';id';和';id';)的无效操作数和错误的计算值,ios,objective-c,Ios,Objective C,当我试图对存储在数组中的值进行一些基本的数学运算时,得到这个错误“二进制表达式('id'和'id')的操作数无效”。注释掉的代码可以工作,但由于某些原因给出了错误的值 @implementation OMOGradesViewController - (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { // Call init method implemen

当我试图对存储在数组中的值进行一些基本的数学运算时,得到这个错误“二进制表达式('id'和'id')的操作数无效”。注释掉的代码可以工作,但由于某些原因给出了错误的值

@implementation OMOGradesViewController

- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    // Call init method implemented by the superclass
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

    if(self){
        // Create array of grades
        self.grades = @[@80, @70, @60, @50, @40];
        // self.grades = @[@"80", @"70", @"60", @"50", @"40"];

}

    // Return the address to the new object
    return self;
}

- (IBAction)calculateAvg:(id)sender
{

    for(NSArray *a in self.grades)
        NSLog(@"%@", a);

    int *avg = ([self.grades objectAtIndex:0] + [self.grades objectAtIndex:1]);

    /*int avg = ((int)self.grades[0] + (int)self.grades[1] + (int)self.grades[2]
    + (int)self.grades[3] + (int)self.grades[4])/5;

    NSString *strFromInt = [NSString stringWithFormat:@"%d",avg];

    self.averageLabel.text = strFromInt;
    NSLog(@"%@", strFromInt);*/


}

@end

这里有太多的问题。这:

int *avg = ([self.grades objectAtIndex:0] + [self.grades objectAtIndex:1]);
应该是:

int avg = [self.grades[0] intValue] + [self.grades[1] intValue];
不能直接添加
NSNumber
对象。您需要获取它们的
int
值(使用
intValue

你的
avg
不能是
int
指针,只能是一个普通的
int


我还用现代的数组访问语法替换了对
objectAtIndex:
的调用。

这里有很多错误。这:

int *avg = ([self.grades objectAtIndex:0] + [self.grades objectAtIndex:1]);
应该是:

int avg = [self.grades[0] intValue] + [self.grades[1] intValue];
不能直接添加
NSNumber
对象。您需要获取它们的
int
值(使用
intValue

你的
avg
不能是
int
指针,只能是一个普通的
int


我还用现代数组访问语法替换了对
objectAtIndex:
的调用。

警告显示在哪一行?警告显示在哪一行?