0

私はObjective-cを学んでおり、現在の日付をMySQLタイムスタンプ形式で生成するクラスを作成しようとしています。コードは正常にコンパイルされますが、次のエラーが発生します。

012-09-07 08:21:00.368 jsonclient[6831:f803] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[getcurrenttime toString]: unrecognized selector sent to class 0x36a9c'

これは簡単な答えだと思いますが、自分で見つけることができませんでした。これは、ヘッダーと .m ファイルが続くクラスへの呼び出しです。

NSString* CurrentDate = [getcurrenttime toString];



#import <UIKit/UIKit.h>

@interface getcurrenttime : NSObject {
    NSString *toString;
}

+(NSString*) toString;

@end




#import "getcurrenttime.h"

@implementation getcurrenttime

- (id)init
{
    self = [super init];
    if (self) {
        // Initialization code here.
    }

    return self;
}

- (NSString*) toString {


    NSDate *now =[NSDate date];
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    toString = [formatter stringFromDate:now];

    return toString;
}
@end
4

2 に答える 2

2

クラスのインターフェースと実装の間に不一致があります。最も簡単な解決策は、次の行を変更することです。

+ (NSString*) toString

クラス メソッドを示すの+代わりに に注意してください。-

于 2012-09-07T12:36:44.070 に答える
0

最初にオブジェクトを初期化する必要があります。

getcurrenttime * objGetTime = [[getcurrenttime alloc] init];

そして、そのメソッドを呼び出します...

NSString * CurrentDate = [objGetTime toString];

念のために行ったのですが、グローバルメソッドで呼び出したい場合は...

NSString * CurrentDate = [getcurrenttime toString];

ただし、getcurrenttime.mファイルに「+」の代わりに「-」を入れてください。

+(NSString *)toString
{{
    NSDate * now=[NSDate日付];
    NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
    [フォーマッターsetDateFormat:@ "yyyy-MM-dd HH:mm:ss"];
    NSString * toString = [フォーマッターstringFromDate:now];
    toStringに戻る;
}
于 2012-09-07T12:37:36.307 に答える