[背景]我正在尝试在目标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];
}
这与Apple文档建议完全相同,但它根本不起作用! 我已经厌倦了指向转换代码对象的各种其他方法,包括控制器类接口中的@property声明和接口中的IBOutlet将其写为覆盖等。 请有人能告诉我我错过了什么吗?
答案 0 :(得分:1)
界面中的方法是- (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];
}