2015-11-06 80 views
0

我試圖創建並返回一個故事板編程而防止崩潰檢查每個蘋果上UIStoryboard文檔異常不返回例外。故事板實例上失敗

如果提到的故事板不存在這個方法應該返回一個例外:

init(name name: String, 
    bundle storyboardBundleOrNil: NSBundle?) 

目前的情況是把下面的代碼:

do { 
    let storyboard = try UIStoryboard(name: "tester", bundle: nil) 
} catch { 
    // Do something 
} 

在DO-catch子句被滿足由預編譯器提供以下警告:方法:

'catch'塊無法訪問,因爲沒有err或被扔在'do' 區塊

可能這是一個錯誤?

編輯:2015/11/19 在向蘋果發送雷達信息後,他們回覆了問題已知,而且我的報告與開放報告相同。

回答

0

的UIStoryboard初始化沒有打上拋出因此你不需要把它放在一個DO-try-catch塊

init(name name: String, 
    bundle storyboardBundleOrNil: NSBundle?) 

足夠然後更改您的代碼

let storyboard = UIStoryboard(name: "tester", bundle: nil) 

注意不要-的try-catch只捕獲錯誤,而不是NSException

你可以閱讀更多關於它here

如果你想還是要儘量趕上NSException在這種情況下,你可以看到這樣的回答:Catching NSException in Swift

+0

這是做抓,不能抓試試,你不需要嘗試,如果它不拋出(在第二個代碼示例中) –

+0

直接從文檔中獲取: 返回值: 指定文件的故事板對象。如果不存在與名稱相關的故事板資源文件,則會引發一個異常:描述:無法在捆綁中找到名爲「XXXXXX」的故事板.... 它應該拋出..所以我的問題是,這是一個錯誤還是一個文檔中存在問題...如果名稱存在錯誤,應用程序將崩潰。 – Tokuriku

+0

@Tokuriku https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/ErrorHandling.html 而你正在使用do-try-catch進行ERROR處理,在Swift中沒有異常處理 – user4478383