2011-08-25 64 views
1

请帮我用下面的代码。我所要做的就是看到两个日期不同的时间(4:42:55),所以我不在乎这些日子。- [NSDate dateFromString:]:无法识别的选择器发送错误

感谢

NSLog(@"error code"); 
NSDate *now = [[NSDate alloc] init]; 
NSDate *time = [[NSDate date] dateFromString:@"6:23 PM"]; 
NSTimeInterval secs = [now timeIntervalSinceDate:time]; 
NSLog(@"end error code"); 

int hours = floor((int)secs/(60 * 60));   
float minute_divisor = (int)secs % (60 * 60); 
int minutes = floor(minute_divisor/60); 
float seconds_divisor = (int)secs % 60; 
secs = ceil(seconds_divisor); 
NSString *msg = [NSString stringWithFormat: @"%@:%@:%@", hours, minutes, (int)secs]; 

这里是有登录

2011-08-24 22:17:34.827 App[31814:f503] error code 
2011-08-24 22:17:34.827 App[31814:f503] -[__NSDate dateFromString:]: unrecognized selector sent to instance 0x6e23d30 
2011-08-24 22:17:34.828 App[31814:f503] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSDate dateFromString:]: unrecognized selector sent to instance 0x6e23d30' 
*** First throw call stack: 
(0x1664082 0x17f5d0a 0x1665d1d 0x15caf70 0x15cad52 0x4998 0x392a 0xdef05 0x3f8d3 0x3fb27 0x3fc82 0xc94ec46 0x46b7a 0x23ae 0x179a0 0x18870 0x275f3 0x280a8 0x1ba29 0x130a10d 0x16381f5 0x159d0a2 0x159b98a 0x159ae34 0x159ad4b 0x18271 0x19a1b 0x1ff8 0x1f55) 
terminate called throwing an exception 

回答

6

dateWithString:是一个类的方法:

[NSDate dateWithString:...] 

然而,NSDate的iOS上不具有此方法。您必须使用带有-dateFromString:方法的NSDateFormatter。

+0

我甚至没有注意到这个分配。接得好。 –

+0

和我得到错误“没有已知的类选择器的方法'dateWithString:'”(我在iOS 5上运行Xcode 4.2 Beta 6) – michaellindahl

+0

@michaellindahl糟糕,没有意识到iOS没有这个。看到我更新的答案。 – jtbandes

0

尝试dateWithString,dateFromString不存在。这是错误告诉你的。

+0

然后我得到一个生成错误。 “没有已知的选择器的实例方法'dateWithString:'”。 Xcode自动完成(或其他)dateFromString。 – michaellindahl

+0

正如@jtbandes指出的那样,这是一种类方法。从该行删除该分配。 –

-1

尝试:

NSDate *time = [NSDate dateWithString:@"6:23 PM"]; 
+0

我得到错误“没有已知的选择器类的方法dateWithString:'”(我在iOS 5 Beta 6上运行Xcode 4.2) – michaellindahl

+0

@michaellindahl:有类似的问题。在iOS 4.3.3上工作正常,但在iOS 5.0上崩溃 – cleverbit

+0

我不确定iOS 4.3.3是如何工作的 - 正如@jtbades在这个问题的主要答案中指出的那样,这种方法在iOS上从不支持苹果系统。改为使用NSDateFormatter的dateToString方法。 –

相关问题