[背景] オブジェクト C で単純な長さコンバーターを作成しようとしています。クリックすると、テキスト フィールドに入力された値を取得し、その値を別のテキスト フィールドに出力する変換を実行するボタンを設定しました。私の元の実装では、ボタンの (IBAction) メソッド内に記述された変換コードが正常に機能していました。ここで、機能を拡張して、選択した長さから他の長さへの変換を含めたいと考えています。これを行うために、選択に応じて変換係数を変更できる NSObject のサブクラス (カテゴリも試しました) に変換コードを記述しました。Apple から提供された情報に従おうとしましたが、役に立ちませんでした。何が欠けているのかわかりません!!
[私のコード] サブクラス インターフェイスを次のように設定しました。
#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 など、変換コード オブジェクトを指すあらゆる種類の追加の方法にうんざりしています。