目标c NSString比较

rus*_*ell 2 objective-c

我有三个按钮,名为(标题)你好,没有,天堂和一个标签(IBOutlet UIlabel实验室).我想显示三个diff消息,三个diff按钮单击.但是以下代码未能实现此目的.谁能提出任何想法?

-(IBAction)buttonclick:(id)sender  
{  

    NSString *title=[sender titleForState:UIControlStateNormal];

    if([title isEqualToString:@"hello"])
    {

        NSString *str=[[NSString alloc] initWithFormat:@"abc"];
    }
    else if([title isEqualToString:@"nothing"]) {

        NSString *str=[[NSString alloc] initWithFormat:@"def"];
    }
    else if([title isEqualToString:@"heaven"])
    {

        NSString *str=[[NSString alloc] initWithFormat:@"ijk"];
    }   

    lab.text=str;
    [str release];
}
Run Code Online (Sandbox Code Playgroud)

输出:

warning:unused variable str;  
Run Code Online (Sandbox Code Playgroud)

Chr*_*ter 5

不要使用按钮的标题来区分按钮.如果您的按钮要本地化,它将无法工作.使用不同的操作,或使用标记来区分它们.

警告是你在这种情况下做错的线索.局部变量仅在其声明的范围内可见,因此您的lab.text = str行实际上是将lab.text设置为在其他位置定义的str,可以是静态变量,也可以是实例变量.这是你可以做的事情:

NSString *str;

switch ([sender tag]) {
  case FirstButtonTag:
    str = @"abc";
    break;
  case SecondButtonTag:
    str = @"def";
    break;
  case ThirdButtonTag:
    str = @"ijk";
    break;
}

lab.text = str;
Run Code Online (Sandbox Code Playgroud)