-1

私は現在のコードを持っています:

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

私のクラスの1つのメソッド内。このコードは実行されるはずですが、xcode でエラーが表示されます。

Use of undeclared identifier 'info'

返品情報と

Unused variable 'info'

timetable *info パーツ用。

なぜこれが起こっているのかわかりません。これが原因でアプリを実行しようとすると、アプリがクラッシュします。このようなifステートメントなしでタイミングテーブルを設定すると、うまくいきます:

Timetable *info = [fetchedObjects objectAtIndex:0];

誰かが私が間違っていることを教えてもらえますか? ありがとう。

4

4 に答える 4

3

またはinfo内の 2 つの異なる場所で変数を宣言しています。ブロックの外では見えません。(これは基本的な C 言語のものです。)ifelseinfo

これは少し読みやすいです:

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

のスコープはinfoif文のみです。その外側で宣言して、外側から見えるようにします。

于 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 に答える