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

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

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

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

let emptyDict = [:]

如何声明一个空字典?


当前回答

除非类型信息可用,否则不能使用[:]。

在这种情况下,你需要显式地提供它:

var dict = Dictionary<String, String>()

Var意味着它是可变的,所以你可以向它添加条目。 相反,如果你让它成为一个let,那么你就不能进一步修改它(let意味着常量)。

例如,如果可以推断类型信息,则可以使用[:]简写符号

var dict = ["key": "value"]

// stuff

dict = [:] // ok, I'm done with it

在上一个例子中,通过第一行就知道字典的类型为dictionary <String, String>。注意,您不必显式地指定它,但它已经被推断出来了。

其他回答

我通常用

var dictionary:[String:String] = [:]
dictionary.removeAll()

除非类型信息可用,否则不能使用[:]。

在这种情况下,你需要显式地提供它:

var dict = Dictionary<String, String>()

Var意味着它是可变的,所以你可以向它添加条目。 相反,如果你让它成为一个let,那么你就不能进一步修改它(let意味着常量)。

例如,如果可以推断类型信息,则可以使用[:]简写符号

var dict = ["key": "value"]

// stuff

dict = [:] // ok, I'm done with it

在上一个例子中,通过第一行就知道字典的类型为dictionary <String, String>。注意,您不必显式地指定它,但它已经被推断出来了。

var dictList = String: swift中字典的字符串 var arrSectionTitle =字符串数组在swift

在Swift中声明和初始化字典

字符串字典

var stringDict: [String: String] = [String: String]()

OR

var stringDict: Dictionary<String, String> = Dictionary<String, String>()

Int字典

var stringDict: [String: Int] = [String: Int]()

OR

var stringDict: Dictionary<String, Int> = Dictionary<String, Int>()

AnyObject字典

var stringDict: [String: AnyObject] = [String: AnyObject]()

OR

var stringDict: Dictionary<String, AnyObject> = Dictionary<String, AnyObject>()

字符串数组字典

var stringDict: [String: [String]] = [String: [String]]()

OR

var stringDict: Dictionary<String, Array<String>> = Dictionary<String, Array<String>>()

字符串字典数组

var stringDict: [[String: String]] = [[String: String]]()

OR

var stringDict: Array<Dictionary<String, String>> = Array<Dictionary<String, String>>()

你必须给字典一个类型

// empty dict with Ints as keys and Strings as values
var namesOfIntegers = Dictionary<Int, String>()

如果编译器可以推断类型,则可以使用较短的语法

namesOfIntegers[16] = "sixteen"
// namesOfIntegers now contains 1 key-value pair
namesOfIntegers = [:]
// namesOfIntegers is once again an empty dictionary of type Int, String