2009-08-17 33 views
2

我試圖製作一個應用程序,它會在插入時響應您的命令。所以你在第一個文本框中輸入任何文本,然後按回車鍵。它將在第二個領域作出迴應。我不確定這裏的編碼是如何完成的。我遇到麻煩了「如果輸入框文本= @」什麼」,我敢肯定這是完全關閉這裏是我的代碼到目前爲止(不是iPhone的SDK):字符串幫助 - 目標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我「M一個完整的小白,因爲我開始的Objective-C像一週前

第二個問題:?

這是一個非常簡單的,但是這將是關閉的應用程序的編碼這是我退出按鈕

回答

9

你想要if ([[inputBox stringValue] isEqualToString:@"whatever"])(假設inputBox是一個NSTextField - 否則,使用適當的方法爲該類獲取一個字符串)。

哦,你可以用[NSApp terminate:self]退出應用程序。

+0

感謝查克的代碼!它終於起作用了。這只是[NSApp terminate:self]給我一個錯誤代碼。 – lab12 2009-08-18 13:24:48

+0

@Chuck,看起來像Java,但語法奇怪。這是否應該是'@'無論]'或者'@「什麼」?對於Objective-C好奇... – 2010-01-28 11:00:52

+0

@Yar:是的,它有點像Java,因爲Java基於Objective-C 。我錯過了關閉引號 – Chuck 2010-01-28 19:04:31

3

查克的答案是現貨,但我認爲它值得擴展,爲什麼你有問題。有一些在你行錯誤:

「如果輸入框文本= @」無所謂」

一)在Objective C中,你必須使用==來檢查,如果x是等於y所以if語句應該是:

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

b)一個字符串變量實際上是不是變量只是抱着一些更復雜的東西變的實際上是保存它的內存地址。另外,你會的l通常實際上只使用指針(用*表示時聲明變量)給變量。

這意味着,如果您鍵入以下內容:

if (myFirstVariable == @"Some text") 

if (myFirstStringVariable == mySecondStringVariable) 

那麼你實際上只檢查是否它們都指向相同的內存位!不是文本是否相同。這就是爲什麼查克解釋你需要使用[isEqualToString]方法。

希望有幫助!

+0

關於字符串值的位並不完全正確。*變量的*值是字符串的地址,這是您引用的數字。字符串的值,就你所能說的複合類型而言,它有一個值,的確是字符串。 – Chuck 2009-08-18 00:55:02

+0

公平,爲了清晰編輯 – h4xxr 2009-08-18 00:58:32

+0

不錯。無論如何,我已經積極參與。我只是想確保人們對指針有所瞭解,因爲很多Objective-C初學者都花時間圍繞着它們是什麼以及它們的意思。 – Chuck 2009-08-18 01:06:33