Ihr Code hat 2 Probleme:
1) "char datechar..." ist ein Einzelzeichen, das nur ein Zeichen/Byte enthält und nicht das gesamte Array, das Sie aus Ihrem date/string-Objekt erzeugen. Daher sollte in Ihrer Zeile ein (*) vor der Variable stehen, um mehrere Zeichen zu speichern und nicht nur ein Zeichen.
2) Nach der obigen Korrektur würden Sie immer noch eine Warnung über (char *) vs (const char *) erhalten, daher müssten Sie "casten", da sie technisch die gleichen Ergebnisse sind. Ändern Sie die Zeile von:
char datechar = [date UTF8String];
in
char *datechar = (char *)[date UTF8String];
Beachten Sie, dass (char *) nach dem =-Zeichen dem Compiler mitteilt, dass der Ausdruck ein (char *) im Gegensatz zu seinem Standard (const char *) zurückgeben würde.
Ich weiß, dass Sie die Antwort bereits markiert haben, aber ich dachte, ich könnte dazu beitragen, die Probleme zu erklären und wie man sie im Detail beheben kann.
Ich hoffe, das hilft.
Mit freundlichen Grüßen Heider