【问题标题】:Invoking Class B's Method B from within Class A's Method A从类 A 的方法 A 中调用类 B 的方法 B
【发布时间】:2013-06-12 12:43:40
【问题描述】:

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

【问题讨论】:

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


    【解决方案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];
    
    }
    

    【讨论】:

    • 感谢@Anoop Vaidya 的回答。我可以看到你是对的,我会在那里遇到问题。不幸的是,我什至还没有解决这个问题。主要问题是: ConversionCode *conver = [[ConversionCode alloc]innit];产生编译器错误:“使用未声明的标识符'ConversionCode'”我似乎无法让控制器类识别我的子类。
    • 那么您可能在创建实例的类中错过了#import ConversionCode...
    • 是的!而已!好一个欢呼阿努普。不敢相信就这么简单!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-03
    • 2021-08-05
    • 1970-01-01
    • 2020-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多