Dictionary <string,any?=“”>和[String:Any?]

时间:2017-05-20 08:48:11

标签: swift dictionary

我想在Swift函数中传递一个可选的字典参数,我尝试将该函数声明为

 func myFunction(_ type:Int, params:Dictionary<String,Any?>?)

以及

 func myFunc(_ type:Int, params:[String:Any?]?)

当我尝试传递字典而不是第二个字典时,我得到警告“表达式隐式强制从Any?to Any”和第一个声明。我需要知道两者之间有什么区别以及警告的原因。仅供参考,以下是我在两种情况下都通过字典的方式:

myFunc(1, params:["key1": value1, "key2": value2])

2 个答案:

答案 0 :(得分:1)

根据Swift文档,它们是相同的:

  

Swift字典的类型完整地写为Dictionary&lt; Key,   值&gt;,其中Key是可以用作的值的类型   字典键,而Value是字典的值的类型   这些钥匙的商店。

     

你也可以用速记形式写一个字典的类型[Key:   值]。虽然这两种形式在功能上是相同的,但是   简写形式是首选,并在本指南中使用时   指的是字典的类型。

我使用的是Xcode版本8.0,我无法重现您的问题。

答案 1 :(得分:0)

它们只是字典声明的不同语法糖,一种类型在所有情况下都不起作用。

例如,

  var msSet = [Vertex<Int> : Double]() 

我问了一个与之相关的问题。

Swift Dictionary Initialization of custom type gives: '>' is not a postfix unary operator error