【问题标题】:String Help - Objective C字符串帮助 - 目标 C
【发布时间】:2009-08-17 23:33:04
【问题描述】:

我正在尝试制作一个在插入时会响应您的命令的应用。因此,您在第一个框中输入任何文本,然后按 Enter。它将在第二个字段中做出响应。我不确定这里的编码是如何完成的。我遇到了“if inputbox text = @”whatever”的问题,我很确定那是完全关闭的。这是我到目前为止的代码(不是 iphone sdk):

#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

顺便说一句,自从我一周前开始使用 Objective-C 以来,我完全是个菜鸟。

第二个问题:

这是一个非常简单的方法,但是关闭应用程序的编码是什么?这是我的退出按钮。

【问题讨论】:

    标签: objective-c xcode string


    【解决方案1】:

    你想要if ([[inputBox stringValue] isEqualToString:@"whatever"])(假设 inputBox 是一个 NSTextField - 否则,使用该类的适当方法从中获取字符串)。

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

    【讨论】:

    • 感谢查克提供的代码!它终于起作用了。只是 [NSApp terminate:self] 给了我一个错误代码。
    • @Chuck,看起来像 Java,但语法很奇怪。那应该是@"whatever] 还是@"whatever"?对于 Objective-C 好奇...
    • @Yar:是的,它有点像 Java,因为 Java 是基于 Objective-C 的。我错过了关闭报价。
    • 小心从代码中退出应用程序。您不应该这样做,只有用户可以决定这样做(通过按下主页按钮)。此答案中的代码可以使用,但它是一个私有 API,Apple 可能会因此决定拒绝您的应用。
    【解决方案2】:

    Chuck 的回答是正确的,但我认为值得详细说明您遇到问题的原因。您的行中有许多错误:

    "如果输入框文本 = @"随便"

    a) 在 Objective C 中,您必须使用 == 来检查 x 是否等于 y。所以 if 语句是:

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

    b) 字符串变量实际上比仅包含数字的变量更复杂。该变量的 value 实际上是存储它的内存地址。此外,您实际上通常只会使用一个 指针(在声明变量时用 * 表示)指向该变量。

    这意味着如果您键入以下内容:

    if (myFirstVariable == @"Some text")
    

    if (myFirstStringVariable == mySecondStringVariable)
    

    那么你实际上只是检查它们是否都指向同一块内存!不是文字是否相同。这就是 Chuck 解释说您需要使用 [isEqualToString] 方法的原因。

    希望有帮助!

    【讨论】:

    • 关于字符串值的部分不太正确。 变量的值是字符串的地址,也就是你引用的数字。字符串的值,可以说复合类型只有一个值,确实是字符串。
    • 不错。反正我已经投了赞成票。我只是想确保人们理解指针,因为很多 Objective-C 初学者都会花时间思考指针是什么以及它们的含义。
    猜你喜欢
    • 2017-10-18
    • 1970-01-01
    • 2010-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-21
    相关资源
    最近更新 更多