调用class时接收NSInvalidArgumentException

时间:2012-09-07 12:32:13

标签: iphone objective-c ios5

我只是在学习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

2 个答案:

答案 0 :(得分:2)

类的接口和实现之间存在不匹配。最简单的解决方案是改变以下行:

+ (NSString*) toString

请注意+而不是-,表示类方法。

答案 1 :(得分:0)

您必须先初始化对象。

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

然后调用它的方法......

NSString* CurrentDate = [objGetTime toString];

你已经完成了,你需要一个全局方法来调用...

NSString* CurrentDate = [getcurrenttime toString];

但是在getcurrenttime.m文件中输入“ - ”而不是“+”。

+ (NSString*) toString 
{
    NSDate *now =[NSDate date];
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    NSString *toString = [formatter stringFromDate:now];
    return toString;
}