"NSDate"没有可见的@interface声明选择器"initWithString:"。

3

我写了以下代码:

可能是重复问题:
NSDate initWithString

这里是需要翻译的内容。

[[NSDate alloc] initWithString:@"2013-03-24 10:45:32 +0200"];

当我尝试编译时,出现以下错误消息:
ARC语义问题:'NSDate'没有声明'stringWithFormat:'选择器的可见@interface 在项目中有以下包含:
#import <Foundation/Foundation.h>

为了确保类已被包含,我尝试了以下代码,并成功编译:

```

[[NSDate alloc] init];

我的代码有什么问题?

XCode版本为4.6。
项目中的基础SDK为iOS 6.1。


1
我也在http://stackoverflow.com/a/7803929/13441找到了答案。 - sergtk
1个回答

4

在iOS平台的NSDate类中,没有提供initWithString函数。你需要先使用NSDateFormatter指定一个日期格式,将日期和时间的文本表示转换成NSDate对象。可以使用以下代码:

NSString *currentDateString = @"2013-03-24 10:45:32";
NSDateFormatter *dateFormater = [[NSDateFormatter alloc] init];
[dateFormater setDateFormat:@"yyyy-MM-DD HH:mm:ss"];
NSDate *currentDate = [dateFormater dateFromString:currentDateString];

这里有一个在类https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSDate_Class/Reference/Reference.html中的方法。但是我似乎错过了它只适用于OS X而不是iOS... - sergtk
2
更准确地说,在iOS平台上,NSDate类没有可用的initWithString:方法。而在Mac OS X平台上,有一个可用的initWithString:方法。 - dreamlax
yyyy-MM-DD 转换为 yyyy-MM-dd - Richard Hsieh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接