从A类方法A中调用B类方法B.

时间:2013-06-16 11:08:25

标签: objective-c class methods action objective-c-category

[背景]我正在尝试在目标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将其写为覆盖等。 请有人能告诉我我错过了什么吗?

1 个答案:

答案 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];

}