2011-01-11 13 views
16

Ich habe verschiedene Methoden ausprobiert, die mich alle warnen. Wie userName = [NSString stringWithFormat:@"%@", [yournamefield stringValue]];, die zu ‚-stringValue‘ kann nicht reagieren, gibt mir nur eine Warnung vonWie bekomme ich den Text von UITextField in einen NSString?

‚UITextField‘

Wie das ich tun?

+0

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

+0

'-stringValue' ist eine Methode von' NSTextField' – NSGod

Antwort

39

den Text im Textfeld Holen Sie sich das text Eigenschaft

NSString *name = yourNameField.text; 
+0

Nein! Verwenden Sie ** nicht ** die Accessor-Methode für etwas, das explizit als Eigenschaft im öffentlichen Header definiert ist. – PeyloW

+0

@PeyloW Kann ich schnell fragen, warum das nicht getan werden soll? Ist es nicht das, was eine Eigenschaft macht, Accessoren zu generieren? Konvertiert die Laufzeitumgebung die Punktsyntax nicht in die Zugriffssyntax? –

+0

@MattM: Ja, es ist was die Implementierung tut, aber Sie sollten das nur als ein Implementierungsdetail und ein Nebeneffekt der Abwärtskompatibilität zu Objective-C 1.0 denken. Eigenschaften sind für den Zustand ** und Methoden für das Verhalten ** vorgesehen. Der Zugriff auf eine Eigenschaft als Methode kompiliert, aber Ihr Code sagt deutlich, dass Sie die API-Absicht missverstehen. – PeyloW

1

Wie wäre es mit:

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

Warum verwenden Sie 'stringWithFormat:' if der String der einzige Inhalt der Formatzeichenfolge? – PeyloW

+0

Kein Grund - es war eine schnelle Änderung von seinem ursprünglichen Post :). – badgerr

12

die text Eigenschaft UITextField Verwendung:

NSString *userName = yourNameField.text; 
1

Zwei Möglichkeiten. Es ist eine Eigenschaft und jeder Eigenschaftswert kann wie folgt zugegriffen werden -

  • yournamefield.text
  • [yournamefield text]
Verwandte Themen