2009-08-17 11 views
2

Ich versuche, eine App zu machen, die auf Ihren Befehl reagiert, wenn eingefügt. Sie geben also einen beliebigen Text in das erste Feld ein und drücken die Eingabetaste. Es wird mit einer Antwort im 2. Feld antworten. Ich bin mir nicht sicher, wie die Codierung hier gemacht wird. Ich habe Probleme mit dem "if inputbox text = @" was auch immer“, ich bin ziemlich sicher, dass vollständig ausgeschaltet Hier ist der Code, den ich bisher (nicht iphone sdk).String Hilfe - Ziel C

#import "HeliosControl.h" 

@implementation HeliosControl 
- (IBAction)quitButton:(NSButton *)sender { 

} 

- (IBAction)sendButton:(NSButton *)sender { 

    if (inputBox *********) // <------ What do I put in for the asterisks? 
    { 
     [outputBox setStringValue:@"Welcome to the SYSTEM"]; 
    } 
    else 
    { 
     [outputBox setStringValue:@"I do not understand your command."]; 
    } 

} 
@end 

BTW I ‚ein komplettes Noob ist, da ich Objective-C wie vor einer Woche

Zweite Frage gestartet.?

Dies ist ein sehr einfacher, aber was wäre die Codierung zum Schließen eine Anwendung Dies ist für meine beenden

Antwort

9

Sie möchten if ([[inputBox stringValue] isEqualToString:@"whatever"]) (vorausgesetzt, inputBox ist ein NSTextField - andernfalls Verwenden Sie die entsprechende Methode für diese Klasse, um eine Zeichenfolge daraus zu erhalten).

Oh, und Sie können die Anwendung mit [NSApp terminate:self] beenden.

+0

Danke Futter für den Code! Es funktioniert endlich. Es ist nur die [NSApp terminate: self], die mir einen Fehlercode gibt. – lab12

+0

@Chuck, sieht aus wie Java, aber mit seltsamer Syntax. Soll das "@" was auch immer sein? 'Oder vielmehr' @ "was auch immer?" Für das Objective-C Curious ... –

+0

@Yar: Ja, es ist ein bisschen wie Java, weil Java auf Objective-C basiert Und ich habe das enge Zitat vermisst. – Chuck

3

Chucks Antwort ist genau richtig, aber ich dachte, es lohnt sich weiter zu vertiefen, warum Sie Probleme hatten. Es gibt eine Reihe von Fehlern in Ihrer Linie:

"wenn inputbox text = @" was auch immer“

a) In Objective C Sie verwenden müssen == überprüfen, ob x gleich y ist . So würde die if-Anweisung sein:

if (myFirstVariable == mySecondVariable) { // Do something } 

b) ein String-Variable tatsächlich eine kompliziertere Sache als eine Variable eine Zahl gerade hält, ist, dass Wert der variablen wird die Speicheradresse tatsächlich sein, wo sie gespeichert werden.. Auch wirst du Normalerweise verwende ich nur einen Zeiger (mit dem * gekennzeichnet, wenn Sie eine Variable deklarieren) auf die Variable.

Das bedeutet, dass, wenn Sie den folgenden Typ:

if (myFirstVariable == @"Some text") 

oder

if (myFirstStringVariable == mySecondStringVariable) 

Dann bist du eigentlich nur überprüft, ob sie für beide auf dem gleichen Bit-Speicher! Nicht, ob der Text derselbe ist. Deshalb, wie Chuck erklärte, müssen Sie die Methode [isEqualToString] verwenden.

Hoffe, dass hilft!

+0

Das Bit über den Wert der Zeichenfolge ist nicht ganz korrekt.Der Wert * der * Variablen ist die Adresse der Zeichenfolge, die die Nummer ist, auf die Sie verwiesen haben. Der Wert der Zeichenfolge, so weit Sie sagen können, dass ein zusammengesetzter Typ einen Wert hat, ist tatsächlich die Zeichenkette. – Chuck

+0

Messe, zur besseren Übersicht bearbeitet – h4xxr

+0

Schön. Ich war ohnehin schon aufgeputscht. Ich möchte nur sicherstellen, dass die Leute über Zeiger verstehen, denn viele Objective-C-Anfänger haben eine Menge Zeit damit, sich mit dem zu beschäftigen, was sie sind und was sie bedeuten. – Chuck