indexNumber.row
是2012-03-09 23:00:00 +0000
之类的日期。我已经尝试了一些不同的方法来将我的日期记录到NSDate
,但我一直收到标题错误。
NSString *inputString = [self.measurements objectAtIndex:indexNumber.row];
// Convert string to date object
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSDate *date = [dateFormatter dateFromString:inputString ];
NSLog(@"date format is: %@", date);
我发现以下错误的任何想法:
由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' - [__ NSDate length]:无法识别的选择器发送到实例0x6ca0c60'
答案 0 :(得分:28)
您收到该错误是因为您将NSDate
对象传递给dateFromString:
。
添加NSLog
,您会看到:
NSString *inputString = [self.measurements objectAtIndex:indexNumber.row];
if ([inputString isKindOfClass:[NSDate class]]) {
NSLog(@"inputString is of type NSDate");
}
此外,以下是重现错误的方法:
NSString *inputString = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSDate *date = [dateFormatter dateFromString:inputString];
这意味着数组self.measurements
包含NSDate
个对象,而不包含NSString
个对象。
当您更正当前问题时,您可能会遇到一个新问题,因为您没有使用正确的日期格式。要解析类型为2012-03-09 23:00:00 +0000
的日期字符串,您应使用以下日期格式:
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss zz"];
答案 1 :(得分:0)
要么 sch 建议,要么根本不需要时间,你可以截断你提供给dateFormatter的字符串。例如。像这样:
NSDate *date = [dateFormatter dateFromString:[inputString substringToIndex:9]];
其中 9 是一个索引,您希望获取一大块字符串。