下面是我的代碼斯威夫特:確定是否強制轉換爲整數字符串成功
func contactForUpdates() -> Int {
//contact server for most recent version
let versionURL = settings.versionURL
if let url = URL(string: versionURL) {
do {
let contents = try NSString(contentsOf: url, usedEncoding: nil)
//NEXT LINE IS WHERE THE QUESTIONS LIES
return Int(contents as String)!
} catch {
// contents could not be loaded
processError("Current version could not be loaded.")
return Int(0)
}
} else {
// the URL was bad!
processError("Current version could not be loaded--URL was bad.")
return Int(0)
}
}
如果URL加載時,它會返回一個整數。一個糟糕的互聯網連接,例如需要在互聯網訪問之前登錄的機場,不會返回一個整數,而是一個請求登錄的完整HTML頁面。用return Int(contents as String)!
強制降格會產生錯誤fatal error: unexpectedly found nil while unwrapping an Optional value
。
我認爲這會在我寫這篇文章時運行catch語句,但是它會返回一個致命錯誤。我怎麼能抓住這個?
這不是直接回答問題,但我建議對於這樣的事情,你考慮使用網絡可達性庫。它會捕獲其他可能無法想到的網絡可達性問題,並且可以在網絡變得可達時執行異步觸發版本檢查等操作。 Cocoapods上有很多。許多是基於塊的,所以不是像你寫的那樣寫一個方法,而是將你的成功案例中的代碼移到你傳遞Reachability庫的塊中。 – divergio