su código tiene 2 problemas:
1) "char datechar ..." es una un solo carácter, que solo contendría un carácter/byte, y no contendría todo el conjunto que está produciendo desde su fecha/objeto de cadena. Por lo tanto, su línea debe tener un (*) al frente de la variable para almacenar varios caracteres en lugar de solo uno.
2) Después de la corrección anterior, aún recibirías una advertencia sobre (char *) vs (const char *), por lo tanto, necesitarías "lanzar" ya que son técnicamente los mismos resultados. Cambie la línea de:
char datechar = [date UTF8String];
en
char *datechar = (char *)[date UTF8String];
Aviso (char *) después del signo =, le dice al compilador que la expresión devolvería un (char *) en lugar de es predeterminado (const char *).
Sé que ya ha marcado la respuesta antes, sin embargo, pensé que podría contribuir a explicar los problemas y cómo solucionarlo con más detalle.
Espero que esto ayude.
Saludos cordiales Heider
UTF8String devuelve un const char * –