0

我在计算器应用程序中使用 Xcode 4.6 时遇到三个错误,您能解释一下可能导致它们的原因吗?

这是3个错误

在对象类型“CalculatorBrain”上找不到属性“pushElement”,

在对象类型 CalculatorviewController 上找不到属性“按下输入”

在对象类型“CalculatorBrain”上找不到属性“执行操作”

这是我在其中遇到错误的代码的一部分CalculatorviewController.m

- (IBAction)enterPressed:(UIButton*)sender {
    [_Brain.pushElement :self.display.text];       ......first error ....
    userIntheMiddleOfEnteringText= NO; 
}

- (IBAction)operationPressed:(UIButton *)sender {
    if (userIntheMiddleOfEnteringText)
        self.enterPressed;                     ........second error.....

    else {
        double result = [_Brain.performOperation];        ... third error...
        self.display.text=[NSString   stringWithFormat:@"%g",result];
    }

}

CalculatorBrain.m代码是

#import "CalculatorBrain.h"

@implementation CalculatorBrain

-(void)pushElement:(double)operand {
    NSNumber *operandObject=[NSNumber numberWithDouble:operand];
                            
    [self.stack addObject:operandObject];
}

-(double) popElement {
    NSNumber *popedNumber=[self.stack lastObject];
    if (popedNumber)
    {
        [_stack removeLastObject];
    }
  
    return [popedNumber doubleValue];
}

-(double)performOperation:(NSString*)operation {
    double  result = 0;
    if( [operation isEqualToString: @"+"]){
        result  =self. popElement + self.popElement;
    }
    else if ([operation isEqualToString:  @"*"]){
        result=self.popElement*self.popElement;
    }
    else if ([operation isEqualToString:@"-" ]) {
        double operand=self.popElement;
        result=self.popElement - operand ;
    }
    else if ([operation isEqualToString:@"/"]) {
        double divisor =self.popElement;
        result= self.popElement/ divisor;
    }
  
    return result;
}

@end
4

1 回答 1

1

所有三个错误都是简单的错误,表明您还不了解 Objective-C 的基础知识。你需要先学习语言。学习如何调用方法和传递参数。

第一个错误:

[_Brain.pushElement :self.display.text];

这应该是:

[_Brain pushElement:self.display.text];

在这里,您要调用对象pushElement:上的方法_Brain

第二个错误:

self.enterPressed;

这表明您正在尝试访问名为enterPressedon的属性self。但是没有这样的属性。有一个名为的方法enterPressed:,它以 aUIButton作为参数。所以你需要这样称呼它:

[self enterPress:sender];

第三个错误:

double result = [_Brain.performOperation];

在这里,您想调用该performOperation方法,但没有。有一个名为 的方法performOperation:。这需要一个类型的参数NSString。它必须像这样调用:

double result = [_Brain performOperation:@"some operation"];

这里缺少的部分是您希望通过的操作。没有明显的迹象表明它来自哪里。也许是按钮标题。

于 2013-02-28T18:02:18.777 回答