-3

我们使用“?”将变量定义为可选,例如:

var name : String? 

然后在整个程序中,我们使用“?”获取变量名称值,例如:

print (name?)

无论如何我们可以摆脱“?” 每次展开可选变量时。

4

3 回答 3

2

您需要使用条件绑定来避免它。

例如:

var name : String?
name = "Hello world"

if let unwrappedName = name as? String
{
   // Now unwrappedName isn't optional
}

基本上, unwrappedName 将是 String AKA,不是可选的。

但这实际上完全取决于您要实现的目标,如果您确定name永远不会为零,我建议您使用隐式展开:

var name : String!

但是使用隐式解包建议 name 可能为 nil,因此需要再次检查条件绑定 - 这完全取决于您对变量永远不会为 nil 的把握程度。

于 2016-04-07T08:00:40.870 回答
1

您应该使用if letand解开可选的包装guard let

于 2016-04-07T07:58:45.300 回答
1

使用隐式展开的选项来避免使用?每次但确保您的变量在使用它时必须具有价值

let someString:String!;

当您获得 someString 的值时

someString = "this is the string"

并在没有“?”的情况下访问 someString

于 2016-04-07T08:08:51.297 回答