-1

我有当前的代码:

if ([fetchedObjects count] == 0){
    Timetable *info = nil;
} else {
    Timetable *info = [fetchedObjects objectAtIndex:0];
}
// Return Data
return info;

在我的一个课程中的一个方法中。此代码应该运行,但 xcode 给了我错误:

Use of undeclared identifier 'info'

退货信息和

Unused variable 'info'

对于时间表*信息部分。

我不知道为什么会发生这种情况,如果我因此尝试运行它,应用程序确实会崩溃。如果我要在没有这样的 if 语句的情况下设置 timtable,它将起作用:

Timetable *info = [fetchedObjects objectAtIndex:0];

有人可以告诉我我做错了什么吗?谢谢。

4

4 回答 4

3

info在两个不同的地方声明变量,在ifor内elseinfo在块外不可见。(这是基本的 C 语言内容。)

这读起来好一点:

Timetable* info = nil;
if ([fetchedObjects count] > 0)
{
   info = [fetchedObjects objectAtIndex:0];
}
return info;
于 2012-06-06T07:39:20.483 回答
2

变量的范围Timetable *info仅在if(){}else{}块内。如果您想稍后返回它,您需要在 if 语句之外声明它。

于 2012-06-06T07:39:05.727 回答
0

范围info只是if 语句。在它外面声明它,这样它就可以在外面看到。

于 2012-06-06T07:39:43.650 回答
0

因为您在 if..else.. 块内的本地范围内定义了信息。

Timetable *info = nil;
if ([fetchedObjects count] != 0){
  info = [fetchedObjects objectAtIndex:0];
}

return info;

改为这样做

于 2012-06-06T07:39:56.013 回答