2016-07-26 21 views
1

die folgende Methode verwendet Storyboard-Instanz zu erhalten:Crashing: storyboardWithName:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"storyboardName" bundle:nil]; 

ich festgestellt habe, dass „Wenn keine Storyboard-Ressource-Datei passender Name vorhanden ist, wird eine Ausnahme mit Beschreibung geworfen wird: Es kann keinen Storyboard finden genannt 'XXXXXX' im Bundle .... ". Ich weiß, dass es nicht zu vorsichtig sein kann, um mit der Methode umzugehen.

Meine Frage ist, dass es eine Möglichkeit gibt, die Ausnahme zu fangen und manuell zu behandeln. Irgendwelche Richtungen?

+0

zeigen Sie Ihren Storyboardname im Dateiinspektor –

+0

Dies ist eine Konstante, die die ganze Zeit korrekt sein sollte, aber wenn Sie extra mega vorsichtig sind, kann vielleicht '@ try' verwenden, '@ catch', '@ finally' – Tj3n

+0

@MuruganandhamK Danke für die Antwort, aber ich habe Angst, es ist ein häufiges Problem, nicht nur in meinem Storyboard :) – CoderWang

Antwort

0
NSString *sbName = @"storyboardName"; 
UIStoryboard *sb; 
@try { 
    sb = [UIStoryboard storyboardWithName:sbName bundle:nil]; 
}@catch (NSException *exception) { 
    [self warnMissingStoryBoard:sbName]; 
    //handle here... 
    return; 
} 
//use sb here... 
+0

Ich habe das in die Praxis umgesetzt, und es funktioniert gut, nicht mehr Abstürze ! Cheers !! @ Tom, @ Tj3n – CoderWang

0
UIStoryboard *st; 
@try{ 
st = [UIStoryboard storyboardWithName:@"XXXXXX" bundle:nil]; 
}@catch (NSException *exception) 
{ 
NSLog (@"%@",[exception description]); 
return; 

} 

In diesem Fall, wenn der storyboardWithName: @ „XXXXXX“ nicht vorhanden ist, dann wird der Code in den catch-Block gehen, wo wir manuell die notwendige Behandlung tun. Ich habe gerade die Beschreibung der Ausnahme protokolliert. Wir können jede Verarbeitung in diesem Block tun, ohne dass der Code abstürzt

+0

In diesem Fall, wenn das StoryboardWithName: @ "XXXXXX" nicht existiert, dann wird der Code in den Catch-Block gehen, wo wir die notwendige Behandlung manuell tun können. Ich habe gerade die Beschreibung der Ausnahme protokolliert. Wir können jede Verarbeitung in diesem Block durchführen, ohne dass der Code abstürzt. –

+0

Sie sollten die Erklärung in Ihre Antwort einfügen. Bearbeiten Sie Ihre Antwort. – Wez

+0

Danke für Ihren Vorschlag. –