2014-11-01 94 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