IDE错误:变量未定义但在if语句中定义

时间:2013-04-12 14:14:44

标签: ios objective-c

我在一系列其他地方定义变量NSURL *url,如果没有错误,那么它将始终被定义(我可以稍后添加错误捕获以防万一)。

这是一种可怕的做法,但对于这种语言来说还是比较新的。

if (whatTime == @"1000") {
        NSURL *url = [NSURL URLWithString:@"http://yyy/json.php?f=1&time=1000"];
    }else if(whatTime == @"1100"){
        NSURL *url = [NSURL URLWithString:@"http://yyy/json.php?f=1"];
    }else if(whatTime == @"1100"){
        NSURL *url = [NSURL URLWithString:@"http://yyy/json.php?f=1"];
    }

但调试器告诉我url未定义。有办法解决这个问题吗?

当我这样做时(在ifs的地狱之上)NSURL *url;它会运行,但表示它没有连接到互联网。

2 个答案:

答案 0 :(得分:1)

对于未定义的问题,您必须在if / elses之外声明NSUrl *url

NSURL *url = nil;
if (whatTime == @"1000") {
    url = [NSURL URLWithString:@"http://yyy/json.php?f=1&time=1000"];
}else if(whatTime == @"1100"){
    url = [NSURL URLWithString:@"http://yyy/json.php?f=1"];
}else if(whatTime == @"1100"){
    url = [NSURL URLWithString:@"http://yyy/json.php?f=1"];
}

我认为未连接的问题与该代码无关。

答案 1 :(得分:1)

ifelse if子句中声明的局部变量仅在这些范围内可见,因此您不能在最后else if之后使用它们。通过在NSURL *url;之前声明if,它会在最后else if之后显示,因为它位于同一范围内。

“未连接到互联网”错误可能与此代码无关。可能你的设备/模拟器没有连接。