Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 调用类时接收NSInvalidArgumentException_Iphone_Objective C_Ios5 - Fatal编程技术网

Iphone 调用类时接收NSInvalidArgumentException

Iphone 调用类时接收NSInvalidArgumentException,iphone,objective-c,ios5,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

我正在学习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
NSString*CurrentDate=[getcurrenttime-toString];
#进口
@接口getcurrenttime:NSObject{
NSString*toString;
}
+(NSString*)toString;
@结束
#导入“getcurrenttime.h”
@实现getcurrenttime
-(id)init
{
self=[super init];
如果(自我){
//这里是初始化代码。
}
回归自我;
}
-(NSString*)toString{
NSDate*现在=[NSDate日期];
NSDateFormatter*格式化程序=[[NSDateFormatter alloc]init];
[格式化程序setDateFormat:@“yyyy-MM-dd HH:MM:ss”];
toString=[formatter stringFromDate:now];
返回字符串;
}
@结束

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

+ (NSString*) toString

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

必须首先初始化对象

getcurrenttime *objGetTime = [[getcurrenttime alloc] init]; getcurrenttime*objGetTime=[[getcurrenttime alloc]init]; 然后调用它的方法

NSString* CurrentDate = [objGetTime toString]; NSString*CurrentDate=[objGetTime toString]; 如果你想用一个全局方法调用

NSString* CurrentDate = [getcurrenttime 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; } +(NSString*)toString { NSDate*现在=[NSDate日期]; NSDateFormatter*格式化程序=[[NSDateFormatter alloc]init]; [格式化程序setDateFormat:@“yyyy-MM-dd HH:MM:ss”]; NSString*toString=[formatter stringFromDate:now]; 返回字符串; }
这给我带来了一个编译器错误。现在它的意思是“getcurrenttime”的No visible@interface声明选择器“toString”第二个应答地址。在阅读另一个问题后,我将-切换为+但当它不起作用时,我从未将其切换回。这是我的头球+。我将+放在.m文件中,得到了一个语法错误。@CODEGY007唯一需要修改的是,如果您使用的是类方法(您在.h文件“+(NSString*)toString”上定义的方法),则必须声明“NSString*toString”在方法本身内部。答案是正确的。在@interface部分,您将
toString
声明为类方法,在@implementation中声明为实例方法。在实现部分,而不是标头。标头中有
+
,实现中有
-
。对不起,我想我误解了您。您想让我把+换成-而不是相反。谢谢