![](/img/trans.png)
[英]Cannot convert value of type ('string: String)' to expected argument type 'URL'
[英]Cannot convert value of type 'String?' to expected argument type 'URL'
我正在嘗試從主包中的文件加載數據。 當我使用此代碼時
let path = Bundle.main.path(forResource: "abc", ofType: "txt")
let dataTwo = try! Data(contentsOf: path)\\ error here
我還嘗試將String轉換為URL
let dataTwo = try! Data(contentsOf: URL(string: "file://\(path)")!)
但執行后我得到了這個
致命錯誤:在展開Optional值時意外發現nil
您可能想要使用.url
:
let url = Bundle.main.url(forResource: "abc", withExtension:"txt")
let dataTwo = try! Data(contentsOf: url!)
並安全地處理錯誤而不是強行展開。
簡單版本:
if let url = Bundle.main.url(forResource: "abc", withExtension:"txt"),
let dataTwo = try? Data(contentsOf: url)
{
// use dataTwo
} else {
// some error happened
}
更好的是:
do {
guard let url = Bundle.main.url(forResource: "abc", withExtension:"txt") else {
return
}
let dataTwo = try Data(contentsOf: url)
// use dataTwo
} catch {
print(error)
}
這樣您就不需要將路徑轉換為URL,因為您從頭開始使用URL,並且可以處理錯誤。 在您的具體情況下,您將知道您的資產是否存在以及您的網址是否正確。
對於文件URL,請使用init(fileURLWithPath :)構造函數。
也在這里
let dataTwo = try! Data(contentsOf: path)\\ error here
擺脫try!
並使用適當的錯誤處理來查看真正的錯誤發生的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.