2016-05-20 28 views
0

setLocationTypeが "ABC Office"の場合は "K"を返し、setLocationTypeが "ABCDE Office"の場合は "W"を返します。私は "制御が非空白関数の終わりに達する可能性があります"というエラーが発生し、さらに進めることができません。エラー:Objective Cの非void関数の終了に制御が到達する可能性があります

+ (NSString*) retrieveLocationType 
{ 
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
    NSString *setLocationType = [prefs stringForKey:locationType]; 
    if (setLocationType == @"ABC Office"){ 
     return @"K"; 
    } 
    else if (setLocationType == @"ABCDE Office"){ 
     return @"W"; 
    } 
} 
+0

ifとelseの両方が失敗した場合はどうなりますか?これらすべての条件の下で返されたstatemtnを持つ必要があるので、すべてが失敗した場合は、デフォルト値を返す必要があります。 –

答えて

1

エラーは、コンパイラは、次の

if (condition1) { return foo; } 
else if (condition2) { return bar; } 

そして、何の両方condition1condition2が偽である場合に発生するような構造を発見したという事実によって与えられますか。 returnステートメントは実行されますが、関数はNSStringの値を返す必要があります。あなたは==オペレータは、オブジェクトの単なるメモリアドレスとを比較してNSStringを比較すると、あなたがisEqualToString:を使用する必要があること

if (condition1) { .. } 
else if (condition2) { .. } 
else { return baz; } 

または

if (condition1) { .. } 
else { .. } 

マインドのようなものにステートメントを変更する必要があります。

関連する問題