2012-03-09 13 views
11

indexNumber.row to data taka jak 2012-03-09 23:00:00 +0000. Próbowałem kilku różnych sposobów, aby uzyskać moją datę na NSDate, ale nadal otrzymuję błąd tytułu.Konwersja ciągu do NSDate: [__NSDate Długość] nierozpoznany wybrany

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

Wszelkie pomysły, dlaczego pojawia się następujący błąd:

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

+0

Jakiego błędu dostałeś, mógłbyś być bardziej konkretny? – Emil

Odpowiedz

28

masz ten błąd, ponieważ jesteś przechodzącą NSDate obiekt do dateFromString:.

dodać NSLog i widać, że:

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

Również tutaj jest jak odtworzyć swój błąd:

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

Oznacza to, że tablica self.measurements zawiera NSDate obiektami, a nie NSString przedmiotów .


Kiedy poprawić aktualny problem, prawdopodobnie wystąpi nowy, ponieważ nie używać odpowiedniego formatu daty. Do analizowania date ciągi typu: 2012-03-09 23:00:00 +0000 należy użyć następującego formatu: data

[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss zz"]; 
+1

próbowałem kilka różnych setDateformats. Pojawił się ten sam błąd w powyższym formacie: "Kończenie aplikacji z powodu nieprzechwyconego wyjątku" NSInvalidArgumentException ", powód: '- [__ NSDate length]: nierozpoznany selektor wysłany do instancji 0x6ca0c60'" – BamBamBeano

+0

dodał NSLog po ustawieniu łańcucha i uzyskał "date format: 2012-03-09 09:36:53 +0000 " – BamBamBeano

+0

przybity to. po uruchomieniu, jeśli, w rzeczywistości był NSDate i nie było potrzeby konwersji. dzięki sch. – BamBamBeano

0

Albo zrobić jak sch sugeruje, lub jeśli nie potrzebują czasu na wszystko, można po prostu obciąć ciąg podawaj do dateFormatter. Na przykład. tak:

NSDate *date = [dateFormatter dateFromString:[inputString substringToIndex:9]]; 

Gdzie jest indeks, do którego chcesz wziąć kawałek sznurka.

+0

To nie rozwiąże jego problemu. Jeśli problem polegał na formatowaniu daty, uzyskałby on "zerową" datę, a nie błąd, o którym wspomniał. – sch

+0

Jeśli problem leży w różnicy między formatem daty i formatem danego ciągu - to ** rozwiąże problem. Jeśli ciąg znaków wynosi * zero *, to oczywiście nic nie da, jak również sugestię. – makaron

Powiązane problemy