Swift:声明一个空字典
我开始通过遵循苹果公司提供The Swift Programming Language
上The Swift Programming Language
来学习Swift。 本书说创build一个空字典应该使用[:]
同时声明数组为[]
:
我声明了一个空数组,如下所示:
let emptyArr = [] // or String[]()
但是在声明空的字典时,我得到语法错误:
let emptyDict = [:]
我如何申报空字典?
var emptyDictionary = [String: String]()
var populatedDictionary = ["key1": "value1", "key2": "value2"]
注意 :如果您要随时间更改字典的内容,则将其声明为var
(variables)。 你可以将一个空的字典声明为一个let
(常量),但是如果你打算随时间改变它的内容,这是毫无意义的,因为常量在初始化后不能被改变。
老答案 :
创build一个types为<String, String>
的空字典将如下所示:
var emptyDictionary = Dictionary<String, String>()
除非types信息可用,否则不能使用[:]
。
在这种情况下,您需要明确提供它:
var dict = Dictionary<String, String>()
var
意味着它是可变的,所以你可以添加条目。 相反,如果你让它成为一个let
你不能进一步修改它( let
手段不变)。
例如,如果可以推断types信息,则可以使用[:]
简写符号
var dict = ["key": "value"] // stuff dict = [:] // ok, I'm done with it
在最后一个例子中,字典已知在第一行有一个Dictionary<String, String>
types。 请注意,您不必明确指定,但已经推断。
使用这将工作。
var emptyDict = [String: String]()
Swift文档build议采用以下方式初始化一个空的Dictionary:
var emptyDict = [String: String]()
当我第一次遇到这个问题时,我有点困惑,因为不同的答案显示不同的方式来初始化一个空的字典。 事实certificate,实际上有很多方法可以做到这一点,尽pipe有些冗余或过于冗长,因为Swift能够推断出types。
var emptyDict = [String: String]() var emptyDict = Dictionary<String, String>() var emptyDict: [String: String] = [:] var emptyDict: [String: String] = [String: String]() var emptyDict: [String: String] = Dictionary<String, String>() var emptyDict: Dictionary = [String: String]() var emptyDict: Dictionary = Dictionary<String, String>() var emptyDict: Dictionary<String, String> = [:] var emptyDict: Dictionary<String, String> = [String: String]() var emptyDict: Dictionary<String, String> = Dictionary<String, String>()
你有一个空的字典后,你可以添加一个键值对像这样:
emptyDict["some key"] = "some value"
如果您想再次清空字典,可以执行以下操作:
emptyDict = [:]
types仍然是<String, String>
因为它是如何初始化的。
你可以简单地声明它:
var emptyDict:NSMutableDictionary = [:]
你必须给字典一个types
// empty dict with Ints as keys and Strings as values var namesOfIntegers = Dictionary<Int, String>()
如果编译器可以推断出types,则可以使用较短的语法
namesOfIntegers[16] = "sixteen" // namesOfIntegers now contains 1 key-value pair namesOfIntegers = [:] // namesOfIntegers is once again an empty dictionary of type Int, String
迅速:
var myDictionary = Dictionary<String, AnyObject>()
我也在玩。 看起来很奇怪,你可以声明一个空的字典,然后像这样添加一个键/值对:
var emptyDictionary = Dictionary<String, Float>() var flexDictionary = [:] emptyDictionary["brian"] = 4.5 flexDictionary["key"] = "value" // ERROR : cannot assign to the result of this expression
但是,您可以使用“Any”types创build一个接受不同值types的字典,如下所示:
var emptyDictionary = Dictionary<String, Any>() emptyDictionary["brian"] = 4.5 emptyDictionary["mike"] = "hello"
你需要明确地告诉数据types,或者当你在Swift中声明任何types时可以推断出types。
Swift 3
下面的示例声明了一个字典,其中键为Int
types,值为String
types。
方法1:初始化程序
let dic = Dictionary<Int, String>()
方法2:速记语法
let dic = [Int:String]()
方法3:字典文字
var dic = [1: "Sample"] // dic has NOT to be a constant dic.removeAll()
您可以将其声明为零,如下所示:
var assoc : [String:String]
那么好的东西是你已经排版(注意我使用了var而不是让它们,认为这些是可变的和不可变的)。 然后你可以稍后填写它:
assoc = ["key1" : "things", "key2" : "stuff"]
如果你想创build一个任何types的通用字典
var dictionaryData = [AnyHashable:Any]()
find你的方法非常方便
var dict:Dictionary = [:]
var dictList = String:用于swift中字典的stringarrSectionTitle =用于swift中数组的string
var parking = [Dictionary < String, Double >()]
^这添加了一个[string:双]input字典