【问题标题】:Why dosn't this objective-c if statement work? [closed]为什么这个objective-c if语句不起作用? [关闭]
【发布时间】:2013-09-08 11:08:26
【问题描述】:

很抱歉,我是 Xcode 和编码的新手。

我正在尝试创建一个 If 语句,以便如果标签 3 = 或大于 20 标签 4 = 0,否则如果低于 20 它 = 1,如果低于 18.5 它 = 2。

这是我的代码:

    if (_label3.text >= @"20") {_label4.text = @"0";}
else if (_label3.text < @"20") {_label4.text = @"1";}
else if (_label3.text <= @"18.5") {_label4.text = @"2";}

我不确定出了什么问题,但我收到了这个错误“字符串文字的直接比较具有未定义的行为”并且 Xcode 不会让我构建应用程序。

感谢您的帮助

【问题讨论】:

  • 在我看来你已经完全改变了这个问题。不仅仅是代码,还有你说你得到的错误消息。请不要浪费人们的时间发布问题只是为了稍后完全改变它们。花点时间查看 SO 为您提供的预览,首先确保它是正确的。
  • 如果我没记错的话,你是不是要比较标签内的数值,对吧?如果是,这不是要采取的方法。
  • >=
  • 您应该阅读基本的 C 教程,而不是已经制作 iOS 应用程序......
  • 我很抱歉编辑,但我一发布就注意到一个愚蠢的错误,我创建并得到一个新错误,所以我修改了帖子,这是我第一次使用 StackOverFlow ,并且不知道会发生什么,我没想到人们会在发布后的几分钟内阅读该帖子,这是我的错,我很抱歉,我感谢大家提供的所有帮助,谢谢.

标签: iphone ios if-statement


【解决方案1】:

您正在对字符串使用算术运算。这肯定是没有意义的

从文本字段输入创建一个浮点数

if ([_label3.text floatValue] >= 20.0) {_label4.text = @"0";}

而且你必须改变第一个和第二个else分支,最后一个永远不会被调用,好像它是真的一样,第一个也是真的。


float value = [_label3.text floatValue];

if (value > 20.0) {_label4.text = @"0";}
else if (value  <= 18.5) {_label4.text = @"2";}
else if (value < 20.0) {_label4.text = @"1";}

【讨论】:

  • +1 第一个也是唯一一个要注意分数的答案。 :-)
  • 谢谢,这可能有效,我知道我做错了什么,我一直在从几个在线教程中学习,在谷歌上搜索了很长时间后,无法得出答案.
【解决方案2】:

label.text 是字符串值,您不能将字符串与 int 进行比较。把字符串改成int,然后像这样比较

if([_label3.text intValue] >= 20){
   _label4.text = @"0";
}

希望这会有所帮助。

【讨论】:

  • 但答案是有效的。他面临的是在 if 表达式中比较字符串的错误。
  • 谢谢你的作品,我已经复制了它并使它适用于 else if,但我无法让它使用
  • 你也需要在
  • +1,不过,答案指出了正确的方向,这很重要。但可能不是int,有些值是小数。
  • 但是问题的第一个条件是一个int值,这就是我选择int的原因...:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-19
  • 2014-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多