1

[背景] 我正在尝试在目标 C 中编写一个简单的长度转换器。我设置了一个按钮,单击该按钮时应获取在文本字段中输入的值并运行将值输出到另一个文本字段的转换。我最初的实现在按钮的 (IBAction) 方法中编写了转换代码,效果很好。现在我想扩展功能以包括从任何选定长度到任何其他长度的转换。为了做到这一点,我在 NSObject 的子类(我也尝试过一个类别)中编写了转换代码,我将能够根据选择更改转换因子。我试图按照苹果提供的信息无济于事。我只是看不到我错过了什么!

[我的代码] 我的子类接口设置如下:

#import <Foundation/Foundation.h>

@interface ConversionCode : NSObject

@property (readonly) NSString *KmString;

- (NSString*) convertLength:(NSString *)LengthIn;

@end

而我的实现:

#import "ConversionCode.h"

@implementation ConversionCode

- (NSString*) convertLength:(NSString *)LengthIn
{
    float milesFVal = LengthIn.floatValue;
    float KmOutVal = milesFVal * 1.609;
    NSString *Km = [NSString stringWithFormat:@"%f",KmOutVal];
    _KmString = Km;
    return _KmString;
}

@end

我希望在按钮单击方法中从我的 GUI 控制器类调用 convertLength 方法,如下所示:

- (IBAction)ClckCvtBttn:(id)sender{

    ConversionCode *convert = [[ConversionCode alloc]init];
    NSString *Km = [convert convertLength];
    [_KmOut setStringValue:Km];

}

这完全按照苹果文档的建议编写,但它根本行不通!我已经厌倦了指向转换代码对象的各种其他方法,包括控制器类接口中的 @property 声明和接口中的 IBOutlet 将其写为覆盖等。请谁能告诉我我错过了什么?

4

1 回答 1

2

接口中的方法是- (NSString*) convertLength:(NSString *)LengthIn;

当您使用时:NSString *Km = [convert convertLength];

你应该使用:

NSString *anyString = @"24";
NString *Km = [convert convertLength:anyString];

您的完整 IBAction 方法:

- (IBAction)ClckCvtBttn:(id)sender{

    ConversionCode *convert = [[ConversionCode alloc]init];
    NSString *anyString = @"24";
    NString *Km = [convert convertLength:anyString];
    [_KmOut setStringValue:Km];

}
于 2013-06-16T11:17:05.960 回答