我开始学习swift是通过苹果公司提供的swift上的iBook-The swift Programming Language。这本书说要创建一个空字典,应该使用[:],就像声明数组为[]一样:

我声明一个空数组,如下所示:

let emptyArr = [] // or String[]()

但是在声明空字典时,我得到语法错误:

let emptyDict = [:]

如何声明一个空字典?


当前回答

用这个会有用的。

var emptyDict = [String: String]()

其他回答

我也在玩这个。看起来很奇怪,你可以声明一个空字典,然后像这样添加一个键/值对:

var emptyDictionary = Dictionary<String, Float>()
var flexDictionary = [:]
emptyDictionary["brian"] = 4.5
flexDictionary["key"] = "value" // ERROR : cannot assign to the result of this expression

但是你可以通过使用"Any"类型创建一个接受不同值类型的Dictionary,如下所示:

var emptyDictionary = Dictionary<String, Any>()
emptyDictionary["brian"] = 4.5
emptyDictionary["mike"] = "hello"

如果要创建具有任何类型的泛型字典

var dictionaryData = [AnyHashable:Any]()

当你在Swift中声明任何东西时,你需要显式地告诉数据类型或类型可以推断。

斯威夫特3

下面的示例声明了一个字典,其中key为Int类型,value为String类型。

方法1:初始化器

let dic = Dictionary<Int, String>()

方法二:简写语法

let dic = [Int:String]()

方法3:字典直译

var dic = [1: "Sample"]
// dic has NOT to be a constant
dic.removeAll()

你可以像这样简单地声明它:

var emptyDict:NSMutableDictionary = [:]

你可以用以下方法将其声明为nil:

var assoc : [String:String]

好的是你已经有了排版(注意我用了var和not let,把它们看成可变和不可变)然后你可以稍后再填写:

assoc = ["key1" : "things", "key2" : "stuff"]