我开始通过关注Apple提供的Swift上的iBook - swift
来学习The Swift Programming Language
。该书说要创建一个空字典,应该使用[:]
,同时将数组声明为[]
:
我声明了一个空数组如下:
let emptyArr = [] // or String[]()
但是在声明空字典时,我收到语法错误:
let emptyDict = [:]
如何声明空字典?
答案 0 :(得分:276)
var emptyDictionary = [String: String]()
var populatedDictionary = ["key1": "value1", "key2": "value2"]
注意:如果您要随时间更改字典的内容,请将其声明为var
(变量)。你可以将一个空字典声明为let
(常量),但如果你打算随着时间的推移改变它的内容是没有意义的,因为常数不能改变之后初始化。
旧答案:
创建类型为<String, String>
的空字典如下所示:
var emptyDictionary = Dictionary<String, String>()
答案 1 :(得分:38)
除非有类型信息,否则您无法使用[:]
。
在这种情况下,您需要明确提供它:
var dict = Dictionary<String, String>()
var
表示它是可变的,因此您可以向其中添加条目。
相反,如果您将其设为let
,则无法进一步修改它(let
表示常量)。
如果可以推断出类型信息,则可以使用[:]
简写表示法,例如
var dict = ["key": "value"]
// stuff
dict = [:] // ok, I'm done with it
在最后一个示例中,已知字典的第一行有Dictionary<String, String>
类型。请注意,您没有必须明确指定它,但已经推断出它。
答案 2 :(得分:27)
Swift documentation建议使用以下方法初始化空字典:
var emptyDict = [String: String]()
当我第一次遇到这个问题时,我有点困惑,因为不同的答案显示了初始化空字典的不同方法。事实证明,实际上有很多方法可以做到这一点,尽管有些方法有点多余或过于冗长,因为Swift能够推断出类型。
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 = [:]
类型仍为<String, String>
,因为它是初始化的方式。
答案 3 :(得分:19)
使用此功能。
var emptyDict = [String: String]()
答案 4 :(得分:15)
您可以简单地声明:
var emptyDict:NSMutableDictionary = [:]
答案 5 :(得分:6)
你必须给字典一个类型
// 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
答案 6 :(得分:5)
<强>夫特:强>
var myDictionary = Dictionary<String, AnyObject>()
答案 7 :(得分:4)
我也在玩这个。你可以声明一个空字典,然后像这样添加一个键/值对,这似乎很奇怪:
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"
答案 8 :(得分:4)
Swift 4
let dicc = NSDictionary()
//MARK: - This is empty dictionary
let dic = ["":""]
//MARK:- This is variable dic means if you want to put variable
let dic2 = ["":"", "":"", "":""]
//MARK:- Variable example
let dic3 = ["name":"Shakeel Ahmed", "imageurl":"https://abc?abc.abc/etc", "address":"Rawalpindi Pakistan"]
//MARK: - This is 2nd Variable Example dictionary
let dic4 = ["name": variablename, "city": variablecity, "zip": variablezip]
//MARK:- Dictionary String with Any Object
var dic5a = [String: String]()
//MARK:- Put values in dic
var dic5a = ["key1": "value", "key2":"value2", "key3":"value3"]
var dic5b = [String:AnyObject]()
dic5b = ["name": fullname, "imageurl": imgurl, "language": imgurl] as [String : AnyObject]
or
//MARK:- Dictionary String with Any Object
let dic5 = ["name": fullname, "imageurl": imgurl, "language": imgurl] as [String : AnyObject]
//MARK:- More Easy Way
let dic6a = NSDictionary()
let dic6b = NSMutalbeDictionary()
答案 9 :(得分:3)
当您在Swift中声明任何内容时,您需要明确告诉数据类型或类型。
Swift 3
下面的示例声明了一个字典,其中键为Int
类型,值为String
类型。
方法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()
答案 10 :(得分:2)
var stringDict: [String: String] = [String: String]()
OR
var stringDict: Dictionary<String, String> = Dictionary<String, String>()
var stringDict: [String: Int] = [String: Int]()
OR
var stringDict: Dictionary<String, Int> = Dictionary<String, Int>()
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>>()
答案 11 :(得分:2)
如果要创建任何类型的通用字典
var dictionaryData = [AnyHashable:Any]()
答案 12 :(得分:1)
我经常使用
var dictionary:[String:String] = [:]
dictionary.removeAll()
答案 13 :(得分:0)
要使用 [:] aka the empty dictionary literal
创建一个空字典,您实际上需要首先提供上下文,如键和值的类型。使用 [:]
创建空字典的正确方法是:
var dict: [String: Int] = [:]
答案 14 :(得分:0)
您可以使用以下代码:
var d1 = Dictionary<Int, Int>()
var d2 = [Int: Int]()
var d3: Dictionary<Int, Int> = [Int : Int]()
var d4: [Int : Int] = [:]
答案 15 :(得分:0)
您可以使用以下内容将其声明为nil:
var assoc : [String:String]
然后好的是你已经排版了(注意我使用了var而不是让它,把它们想象成可变和不可变的)。然后你可以稍后填写:
assoc = ["key1" : "things", "key2" : "stuff"]
答案 16 :(得分:-1)
var dictList = String:swift中字典的字符串 var arrSectionTitle = swift中数组的字符串
答案 17 :(得分:-2)
var parking = [Dictionary < String, Double >()]
^这会为[string:double]输入
添加字典答案 18 :(得分:-2)
找到自己的方式非常方便
var dict:Dictionary = [:]