gpt4 book ai didi

ios - 在已创建的对象 "the name of the class i' 上找不到属性”,并且 View Controller 无法识别其中定义的方法

转载 作者:行者123 更新时间:2023-11-29 04:06:18 25 4
gpt4 key购买 nike

我使用 Xcode 4.6 作为计算器应用程序,但遇到了三个错误,您能解释一下可能导致这些错误的原因吗?

这里有 3 个错误

property 'pushElement' not find on object type "CalculatorBrain",

property 'enter pressed' not found on object type CalculatorviewController

property 'perform operation' not find on object type "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

最佳答案

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

第一个错误:

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

这应该是:

[_Brain pushElement:self.display.text];

此处您要调用 _Brain 对象上的 pushElement: 方法。

第二个错误:

self.enterPressed;

这表明您正在尝试访问 self 上名为 enterPressed 的属性。但没有这样的属性(property)。有一个名为 enterPressed: 的方法,它采用 UIButton 作为参数。所以你需要这样调用它:

[self enterPress:sender];

第三个错误:

double result = [_Brain.performOperation];

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

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

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

关于ios - 在已创建的对象 "the name of the class i' 上找不到属性”,并且 View Controller 无法识别其中定义的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15142233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com