Twój kod ma 2 problemy:
1) "char datechar ..." to jednoliterowy, który miałby tylko jeden znak/bajt i nie byłby w stanie zachować całej tablicy, którą tworzysz z obiektu date/string. Dlatego twoja linia powinna mieć (*) przed zmienną, aby przechowywać wiele znaków, a nie tylko jeden.
2) Po powyższej poprawce, nadal otrzymasz ostrzeżenie o (char *) vs (const char *), w związku z tym musisz "rzucić", ponieważ są one technicznie takie same wyniki. Zmienić linię:
char datechar = [date UTF8String];
do
char *datechar = (char *)[date UTF8String];
Zawiadomienie (char *) po znaku =, informuje kompilator, że wyrażenie zwróci (char *), w przeciwieństwie do jest domyślny (const char *).
Wiem, że już wcześniej zaznaczyłeś odpowiedź, ale pomyślałem, że mógłbym przyczynić się do wyjaśnienia problemów i sposobu ich naprawy.
Mam nadzieję, że to pomoże.
poważaniem Heider
UTF8String zwraca const char * –