converting string to NSDate issue: [__NSDate Length] unrecognized selected

10,488

You get that error because you are passing a NSDate object to dateFromString:.

Add an NSLog and you will see that:

NSString *inputString = [self.measurements objectAtIndex:indexNumber.row];
if ([inputString isKindOfClass:[NSDate class]]) {
    NSLog(@"inputString is of type NSDate");
}

Also, here is how to reproduce your error:

NSString *inputString = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSDate *date = [dateFormatter dateFromString:inputString];

That means that the array self.measurements contains NSDate objects and not NSString objects.


When you correct your current problem, you will probably encounter a new one because you don't use the correct date format. To parse date strings of type: 2012-03-09 23:00:00 +0000 you should use the following date format:

[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss zz"];
Share:
10,488
BamBamBeano
Author by

BamBamBeano

Updated on June 21, 2022

Comments

  • BamBamBeano
    BamBamBeano almost 2 years

    indexNumber.row is a date like 2012-03-09 23:00:00 +0000. I've tried a handful of different ways to get my date into an NSDate, but I keep getting the title error.

    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);
    

    Any ideas why I get the following error:

    Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSDate length]: unrecognized selector sent to instance 0x6ca0c60'

  • BamBamBeano
    BamBamBeano about 12 years
    i've tried a few different setDateformats. I get the same error with the above format: "Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSDate length]: unrecognized selector sent to instance 0x6ca0c60'"
  • BamBamBeano
    BamBamBeano about 12 years
    added an NSLog after setting the string and get "date format is:2012-03-09 09:36:53 +0000"
  • sch
    sch about 12 years
    That won't solve his problem. If the problem was the date formatting, he would get a nil date and not the error he mentioned.
  • makaron
    makaron about 12 years
    If the problem is in the difference between date format and the format of given string - it will solve the problem. If the string is nil, then of course it won't give anything, as well as you suggestion.
  • BamBamBeano
    BamBamBeano about 12 years
    nailed it. after running your if, it was in fact an NSDate and no conversion was necessary. thanks sch.