2016-05-20 14 views
0
erreichen

Ich möchte "K" zurückgeben, wenn setLocationType "ABC Office" ist und "W" zurückgeben, wenn setLocationType "ABCDE Office" ist. Ich bekomme "Kontrolle kann Ende der nicht-void Funktion erreichen" Fehler und ich bin nicht in der Lage, weiter zu gehen.Fehler: Steuerelement kann Ende der nicht void -Funktion in Objective C

+ (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

Was ist, wenn sowohl wenn als auch wenn fehlschlägt? Sie müssen einen Rückgabewert unter all diesen Bedingungen haben. Wenn alles fehlschlägt, sollte ein Standardwert zurückgegeben werden. –

Antwort

1

Der Fehler wird durch die Tatsache gegeben, dass der Compiler eine Struktur wie die folgenden

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

Und was, wenn falsch sind beide condition1 und condition2 geschieht findet? Die Anweisung return wird ausgeführt, die Funktion muss jedoch einen Wert vom Typ NSString zurückgeben. Sie müssen die Anweisungen in so etwas wie

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

oder

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

Kenntnis, dass sich NSString mit == Operator Vergleich vergleicht nur die Speicheradresse der Objekte, sollten Sie isEqualToString: verwenden.