2014-11-01 69 views
3

我試圖做一個NSUUID用指定的值:NSUUID與UUIDString初始化

let uuidString  = "000000-0000-0000-0000-000000000000" 
let beaconUUID:NSUUID = NSUUID(UUIDString: uuidString) 

第二行給出了一個錯誤信息:

在調用額外的參數 'UUIDString'

看着documentation它似乎應該工作。有任何想法嗎?

我還在uuidString之後加了as String,同樣的問題。

+1

我喜歡你的公爵圖標@TofuBeer – the0ther 2015-08-22 18:41:34

回答

16

錯誤消息是誤導性的。 init?(UUIDString string: String)是 failable初始化」,並返回一個可選的它必須被解開所以

let beaconUUID:NSUUID = NSUUID(UUIDString: uuidString)! 

或者乾脆

let beaconUUID = NSUUID(UUIDString: uuidString)! 

作品如果有任何機會,初始化失敗,然後使用可選的結合。:

if let beaconUUID = NSUUID(UUIDString: uuidString) { 
    // ... 
} else { 
    // failed 
} 

欲瞭解更多信息,請參閱

+0

謝謝,我之前做過這件事,它確實給了我零。事實證明,我已經放棄了我傳遞的UUID中的主角。一組全新的錯誤信息:-) – TofuBeer 2014-11-01 20:25:59

0
NSUUID(UUIDString: uuidString) 

返回一個可選的,所以你必須聲明你的變量爲可選爲好。

let uuidString  = "000000-0000-0000-0000-000000000000" 
let beaconUUID:NSUUID? = NSUUID(UUIDString: uuidString) 
0

其實什麼是「!」在迅速?我知道這是代表不是意思,但是在這種情況下它是如何使用的?任何人都可以向我解釋,我是Swift編程語言的新手。

+0

Swift以幾種不同的方式使用'!'。這些答案中使用的是強制展開可選值。可選類型是常規類型,例如'String',它也可以是'nil',寫成'String?'。 如果你有一個'String?'類型的值,並且你想打開它來得到一個'String'類型的值,那麼你使用'!'作爲值。換句話說,如果'x:String?',你可以寫'x!'來獲得由可選項包裝的普通'String'值。只有當你知道這個值不是'nil'時,這纔有效,否則你會得到一個運行時異常。 '!'是表示潛在的危險。 – rokob 2015-09-30 05:06:33