2016-09-16 50 views
4

似乎URL初始值設定項(字符串:「」)在使用字符串插值時拒絕正確初始化。問題是,當我使用類似URL和字符串插值

let url = URL(string: "http://192.168.1.1") 

它的工作原理,但以下

let host = "192.168.1.1" 
let url = URL(string: "http://\(host)") 

不和url =零。

在Playground中,但不在代碼中。我仔細檢查了變量主機是否設置正確。

有什麼想法?

+0

'在遊樂場兩部作品,但不是在code.'沒有理由爲,它應該工作相同的應用程序。我的猜測是你在其他地方有另外一個問題 - 或者你的價值觀不是你認爲的那樣,請與調試器覈對一下。 – Moritz

+0

只要提一下,在使用NSURL之前它已經很長時間了,直到我昨天將代碼遷移到Swift3。 – user2754787

+0

它在測試應用程序中適用於Swift 3。 [截圖](https://www.evernote.com/l/AOw6OBs-sdlFl6y0v4DPhjPGwtfBzMNp2lI) – Moritz

回答

0

我在swift世界很新,我也有這個問題,在我的情況下,我宣佈讓其他類中的URL不變,並且swift不會因爲錯誤而大叫。所以你可以搜索你是否聲明瞭兩次var。

6

有類似的問題。

這個工作在斯威夫特2,但是在斯威夫特3(I我們的應用程序,與Facebook類似&透過Facebook Messenger的2間反彈)爆發:與隱式聲明展開自選(變量

var userId: Int! 
var userType: String! 

// userId and userType are set by some code somewhere else... 

if let url = URL(string: "anotherappicreated://?userId=\(userId)&userType=\(userType)") { 
    UIApplication.shared.openURL(url) // Open our other app 
} 

在斯威夫特2! )工作時無需拆開包裝。在斯威夫特3看來你必須明確地拆開包裝選配:

var userId: Int! 
var userType: String! 

// userId and userType are set by some code somewhere else... 

if let userId = userId,  // <-- HAD TO ADD THIS 
    let userType = userType, // <-- AND THIS 
    let url = URL(string: "anotherappicreated://?userId=\(userId)&userType=\(userType)") { 
    UIApplication.shared.openURL(url) // Open our other app 
}