方法和返回值计算的麻烦

时间:2013-01-20 05:38:36

标签: ios objective-c cocoa-touch

我创建了一种计算简单计算的方法。

我希望该方法返回一个int并获取2个int参数。

我创建了一个名为calculate的类。我将计算导入viewController.m并创建了一个动作2 textFields和一个文本Label。我正在使用此视图来测试该方法。 我的方法在计算中返回0。我究竟做错了什么?这很简单,但我似乎无法弄清楚我在哪里弄错了。这是代码。

Calculation.h

#import <Foundation/Foundation.h>

@interface Calculation : NSObject

@property (nonatomic) int odometerStart;
@property (nonatomic) int odometerEnd;
@property (nonatomic) int odometerTotal;

- (int)mileageStart:(int)start mileageEnd: (int)end;    

@end

Calculation.m

#import "Calculation.h"

@implementation Calculation
@synthesize odometerEnd, odometerStart, odometerTotal;      


- (int)mileageStart:(int)start mileageEnd:(int)end
{
    odometerStart = start;
    odometerEnd = end;
    odometerTotal = end - start;        
    return odometerTotal;
} 
@end

viewController.h

#import <UIKit/UIKit.h>

@interface MileageViewController : UIViewController
- (IBAction)calculateMileage:(id)sender;
@property (strong, nonatomic) IBOutlet UITextField *startLabel;
@property (strong, nonatomic) IBOutlet UITextField *endLabel;
@property (strong, nonatomic) IBOutlet UILabel *displayLabel;
@end

viewController.m

#import "MileageViewController.h"
#import "Calculation.h"

@implementation MileageViewController
@synthesize startLabel;
@synthesize endLabel;
@synthesize displayLabel;

- (void)viewDidUnload
{
    [self setStartLabel:nil];
    [self setEndLabel:nil];
    [self setDisplayLabel:nil];
    [super viewDidUnload];
    // Release any retained subviews of the main view.
}

- (IBAction)calculateMileage:(id)sender {        
    Calculation *mileage = [[Calculation alloc] init];

    int odomStart = [[startLabel text] intValue];
    int odomEnd = [[endLabel text ] intValue];
    [mileage mileageStart:odomStart mileageEnd:odomEnd];
    mileage.odometerTotal = displayLabel.text.intValue;
    NSLog(@"THe total is %d", mileage.odometerTotal);

我的总数保持等于0.计算未计算。

2 个答案:

答案 0 :(得分:1)

你的陈述是倒退的。您正在尝试将odometerTotal的值设置为标签的值,但您想要反过来。它应该是:

displayLabel.text = [NSString stringWithFormat:@“%d”,mileage.odometerTotal];

但是,里程返回一个int值,因此您不需要在Calculation类中使用odometerTotal属性。你可以这样做:

displayLabel.text = [NSString stringWithFormat:@"%d",[mileage mileageStart:odomStart mileageEnd:odomEnd]];

答案 1 :(得分:-2)

我看到了整个程序,你所做的任务似乎错了,

大胆指出如下:

mileage.odometerTotal = displayLabel.text.intValue;

您想使用calculate类来计算总值。虽然订单应该相反。

这个怎么样:

displayLabel.text.iniValue = mileage.odometerTotal;

然后使用NSLog方法打印您的预期结果。