我们使用“?”将变量定义为可选,例如:
var name : String?
然后在整个程序中,我们使用“?”获取变量名称值,例如:
print (name?)
无论如何我们可以摆脱“?” 每次展开可选变量时。
您需要使用条件绑定来避免它。
例如:
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 的把握程度。
您应该使用if let
and解开可选的包装guard let
。
使用隐式展开的选项来避免使用?每次但确保您的变量在使用它时必须具有价值
let someString:String!;
当您获得 someString 的值时
someString = "this is the string"
并在没有“?”的情况下访问 someString