2009-08-17 34 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