scanf не работает с NSString, так как scanf не работает с объектами.Он работает только для примитивных типов данных, таких как:
- int
- float
- BOOL
- char
Что делать?
Технически строка состоит из последовательности отдельных символов.Таким образом, чтобы принять ввод строки, вы можете прочитать последовательность символов и преобразовать ее в строку.
use:
[NSString stringWithCString:cstring encoding:1];
Вот рабочий пример:
NSLog(@"What is the first name?");
char cstring[40];
scanf("%s", cstring);
firstName = [NSString stringWithCString:cstring encoding:1];
Вот объяснение приведенного выше кода, комментарий за комментарием:
- Вы объявляете переменную cstring для хранения 40 символов.
- Затем вы указываете scanf ожидать списоксимволов с помощью спецификатора формата% s.
- Наконец, вы создаете объект NSString из списка символов, которые были прочитаны.
Запустите ваш проект;если вы введете слово и нажмете Enter, программа должна напечатать то же слово, которое вы ввели.Просто убедитесь, что слово содержит не более 40 символов;если вы введете больше, это может привести к сбою программы - вы можете сами это проверить!:]
Взято из: RW.