"if"条件不起作用

The*_*mer 0 cocoa if-statement objective-c

由于某种原因,在if条件中声明的变量得到一个未使用的变量,而稍后将要使用的变量得到未声明的变量.为什么会发生这种情况,以及解决问题的方法是什么.

NSString *name = [NSString stringWithFormat:@"Josh"];

if ([name isEqualToString:@"Josh"])
{
    NSString *greeting = [NSString stringWithFormat:@"Hello Josh"]; //Warning: Unused variable 'greeting'
}
else 
{
    NSString *greeting = [NSString stringWithFormat:@"Hello %@", name]; //Warning: Unused variable 'greeting'
}
NSLog (@"%@", greeting); //Error: 'greeting' undeclared
Run Code Online (Sandbox Code Playgroud)

kov*_*pas 9

你一定要阅读变量范围.

这是一个正确的代码:

NSString *name = [NSString stringWithFormat:@"Josh"];
NSString *greeting = nil;

if ([name isEqualToString:@"Josh"])
{
    greeting = [NSString stringWithFormat:@"Hello Josh"];
}
else 
{
    greeting = [NSString stringWithFormat:@"Hello %@", name];
}

NSLog (@"%@", greeting);
Run Code Online (Sandbox Code Playgroud)