我在游乐场玩了一个想法。这个想法NSDictionaries用作“保持”数据的方式。
我开始创建名为variable
类型layer
的{{1}}。
因此,发生了错误。我是一个小时试图解决,并找不到错误的原因发生。我是Swift的新手。
[String:[String:String]]
有人可以帮助我吗?或者告诉我如何才能获得NSDictionaries的最终结果?
答案 0 :(得分:2)
您已声明变量layers
的类型,但尚未为其分配存储空间。
请改为尝试:
var layers = [String:[String:String]]()
如果您坚持layers
是隐式解包的可选,那么您可以通过以下方式初始化它:
var layers: [String:[String:String]]! = [:]
这将允许您稍后为其分配nil
,但这样做会很危险,因为如果您尝试在nil
时使用它会崩溃。这就是你崩溃的原因。
如果您希望它是可选的,您应该使用?
声明它,以便可以安全地解开它:
var layers: [String:[String:String]]?
// Sometime later
layers = [:]
// use optional chaining to assign values, this safely does
// nothing if layers is nil
layers?["key"] = ["layer":"layer"]
layers?["key2"] = ["asd":"12312"]
// use optional binding to unwrap layers
if let unwrapped_layers = layers {
print(unwrapped_layers)
}
在Playground中尝试此操作,然后尝试注释layers = [:]
部分,您会看到它没有崩溃,因为layers
的所有访问都是以正确的方式安全地完成的在layers
为nil
时处理此案例。