2011-01-11 13 views
16

Ho provato vari metodi, che mi danno tutti degli avvertimenti. Come ad esempio userName = [NSString stringWithFormat:@"%@", [yournamefield stringValue]]; che appena mi dà un avvertimento diCome posso ottenere il testo da UITextField in una NSString?

'UITextField' non può rispondere a '-stringValue'

Come faccio a fare questo?

+0

http://developer.apple.com/library/ios/#documentation/uikit/ reference/UITextField_Class/Reference/UITextField.html # // apple_ref/doc/uid/TP40006888 – filipe

+0

'-stringValue' è un metodo di' NSTextField' – NSGod

risposta

39

ottenere il testo all'interno del campo di testo utilizzando la proprietà text

NSString *name = yourNameField.text; 
+0

No! Do ** not ** usa il metodo accessor per qualcosa che è esplicitamente definito come una proprietà nell'intestazione pubblica. – PeyloW

+0

@PeyloW Posso chiedere rapidamente perché questo non deve essere fatto? Non è questo ciò che fa una proprietà, generando accessi? Il runtime non converte la sintassi del punto nella sintassi accessor? –

+0

@MattM: Sì, è ciò che sta facendo l'implementazione, ma dovresti solo considerarlo come un dettaglio di implementazione e un effetto collaterale della retrocompatibilità con Objective-C 1.0. Le proprietà sono destinate allo ** stato ** e i metodi sono per ** comportamento **. L'accesso a una proprietà come metodo viene compilato, ma il tuo codice indica chiaramente che hai frainteso l'intenzione dell'API. – PeyloW

1

ne dite:

userName = [NSString stringWithFormat:@"%@", yournamefield.text]; 
+0

Perché usare 'stringWithFormat:' if la stringa è l'unico contenuto della stringa di formato? – PeyloW

+0

Nessun motivo: è stato un rapido cambiamento rispetto al suo post originale :). – badgerr

12

utilizzare la proprietà text di UITextField:

NSString *userName = yourNameField.text; 
1

due modi. Si tratta di una proprietà e qualsiasi valore di proprietà può essere letta in questo modo -

  • yournamefield.text
  • [yournamefield text]
Problemi correlati