Как мне получить текст из UITextField в NSString?

Я пробовал разные методы, и все они выдают мне предупреждения. Например, userName = [NSString stringWithFormat:@"%@", [yournamefield stringValue]];, который просто предупреждает меня о

'UITextField' может не отвечать на '-stringValue'

Как мне это сделать?


person Andrew    schedule 11.01.2011    source источник
comment
developer.apple.com/library/ios/#documentation/uikit/reference/.   -  person filipe    schedule 11.01.2011
comment
-stringValue - это метод NSTextField   -  person NSGod    schedule 11.01.2011


Ответы (4)


Получить текст внутри текстового поля с помощью свойства text

NSString *name = yourNameField.text;
person Jilouc    schedule 11.01.2011
comment
Нет! Не используйте метод доступа для чего-то, что явно определено как свойство в общедоступном заголовке. - person PeyloW; 11.01.2011
comment
@PeyloW Могу я быстро спросить, почему этого нельзя делать? Разве это не то, что делает свойство, генерируя аксессоры? Не преобразует ли среда выполнения точечный синтаксис в синтаксис средства доступа? - person ; 16.01.2011
comment
@MattM: Да, это то, что делает реализация, но вы должны думать об этом только как о детали реализации и побочном эффекте обратной совместимости с Objective-C 1.0. Свойства предназначены для состояния, а методы - для поведения. Доступ к свойству как к методу компилируется, но ваш код ясно говорит о том, что вы неправильно понимаете намерение API. - person PeyloW; 18.01.2011
comment
Боюсь, я здесь с вами не согласен. В собственных документах Apple говорится, что точечный синтаксис - это синтаксический сахар, предоставляемый в качестве альтернативы обозначению квадратных скобок. По общему признанию, он имеет то преимущество, что компилятор сигнализирует об ошибке, когда он обнаруживает попытку записи в объявленное свойство, доступное только для чтения, тогда как квадратные скобки в лучшем случае генерируют предупреждение о необъявленном методе. Однако это определенно не означает неправильного понимания намерений API. - person ; 18.01.2011
comment
@PeyloW Пожалуйста, посмотрите NSDateComponents и скажите, есть ли у него состояние или поведение. Ваш аргумент неверен. Свойство - это термин, не связанный строго с синтаксисом @property. Даже в Objective-C 1.0 вы использовали свойства, но вам приходилось писать аксессоры самостоятельно. Точечный синтаксис - это просто более простой способ вызывать методы без аргументов, но не следует злоупотреблять явно поведенческими методами. Но это всего лишь проблема стиля, и он работает точно так же. Это не детали реализации. --- Ах, опять старый вопрос, который появился на главной странице SO :( - person Tricertops; 17.07.2013

Используйте свойство text UITextField:

NSString *userName = yourNameField.text;
person Eric Chai    schedule 11.01.2011

Как насчет:

userName = [NSString stringWithFormat:@"%@", yournamefield.text];
person badgerr    schedule 11.01.2011
comment
Зачем использовать stringWithFormat:, если строка - единственное содержимое строки формата? - person PeyloW; 11.01.2011
comment
Нет причин - это было быстрое изменение его исходного сообщения :). - person badgerr; 12.01.2011

Два пути. Это свойство, и к любому значению свойства можно получить доступ следующим образом:

  • yournamefield.text
  • [yournamefield text]
person AshD    schedule 10.03.2015