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

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

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

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

let emptyDict = [:]

如何声明一个空字典?


当前回答

Swift文档推荐用以下方式初始化一个空Dictionary:

var emptyDict = [String: String]()

当我第一次遇到这个问题时,我有点困惑,因为不同的答案显示了初始化空Dictionary的不同方法。事实证明,实际上有很多方法可以做到这一点,尽管考虑到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>,因为这是它初始化的方式。

其他回答

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

var assoc : [String:String]

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

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

用这个会有用的。

var emptyDict = [String: String]()

当你在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()

Swift文档推荐用以下方式初始化一个空Dictionary:

var emptyDict = [String: String]()

当我第一次遇到这个问题时,我有点困惑,因为不同的答案显示了初始化空Dictionary的不同方法。事实证明,实际上有很多方法可以做到这一点,尽管考虑到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>,因为这是它初始化的方式。

斯威夫特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()