【问题标题】:Method To Delete 2nd Label, Then First Label, Not Functioning Correctly删除第二个标签,然后是第一个标签的方法,无法正常工作
【发布时间】:2014-03-18 20:31:11
【问题描述】:

我知道我遗漏了一些明显的东西,但我就是看不到它。此方法旨在将标签的文本与文本框的文本进行比较,然后删除文本。因此,如果第一个标签为“小狗”,第二个标签为“小猫”,并且文本框显示“小猫”,则该方法应删除第二个标签的文本并保留第一个标签的文本。如果第二个标签为空白,则该方法应删除第一个标签的文本。

但无论我如何弄乱该方法,它要么删除第二个标签而不是第一个标签,要么删除它们,要么都不删除它们。这是我尝试过的 (lblFabric1 是第一个标签,lblFabric2 是第二个标签,txtType 是文本框):

-(IBAction)btnDelete:(id)sender
{
  if ((self.lblFabric2.text== self.txtType.text))
   {
     self.lblFabric2.text = @"";
   }
  else if ((self.lblFabric2.text != self.txtType.text))
   {
     self.lblFabric1.text=@"";
   }
}

它会删除第二个标签,但不会删除第一个标签。如果我尝试将“Else if”设置为:

else if ((self.lblFabric2.text==@""))

它给了我一个错误(““字符串文字的直接比较具有未定义的行为。”)我是不是走错了路?我错过了什么?

【问题讨论】:

    标签: ios objective-c uilabel


    【解决方案1】:

    您不应该使用 == 或 != 在 Objective C 中进行字符串比较。您需要使用 isEqualToStringisEqual 方法。

    if (([self.lblFabric2.text isEqualToString:self.txtType.text]))
    

    当您使用 == 或 != 时,您是在比较存储字符串的指针。

    【讨论】:

    • 天哪,我可以吻你。这正是我所需要的!
    【解决方案2】:

    比较NSStrings 使用:

    if ([myString1 isEqualToString:myString2])
    

    Documentation

    【讨论】:

      【解决方案3】:

      不保证使用 == 比较字符串文字的行为与您预期的一样。请改用isEqual:isEqualToString:

      http://nshipster.com/equality/

      【讨论】:

        【解决方案4】:

        当您将NSStrings 与== 进行比较时,您实际比较的是两个内存地址,而这并不是您真正想要的。您想比较 == 运算符不适合的两个字符串的值,因此您会收到警告

        字符串文字的直接比较具有未定义的行为。

        要比较NSStrings 的值,您应该使用isEqualToString: 方法。您也可以使用派生自NSObject 类的isEqual: 方法,但这不适合Unicode 比较。所以isEqualToString: 永远是最安全的选择。

        使用isEqualToString: 后,您的代码应如下所示:

        -(IBAction)btnDelete:(id)sender
        {
          if ([self.lblFabric2.text isEqualToString:self.txtType.text])
           {
             self.lblFabric2.text = @"";
           }
          else
           {
             self.lblFabric1.text=@"";
           }
        }
        

        【讨论】:

          猜你喜欢
          • 2018-05-23
          • 2020-10-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-11-15
          • 1970-01-01
          • 2014-10-04
          相关资源
          最近更新 更多