[Dictionary <string,string =“”>()]和[String:String]()之间有什么区别?

时间:2015-12-20 09:00:14

标签: ios iphone swift dictionary

我可以知道这两个字典声明之间的区别吗?

var places = [String: String]()

var places = [Dictionary<String, String>()]

当我尝试以这种方式追加时,为什么只有第二种声明方式有效:

places.append(["name":"Taj Mahal", "lat":"27.175277", "lon":"78.042128"])

感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

这是一本简单的字典:

var places = [String: String]()

显然,尝试在字典上调用append将无效。

你的第二个演绎是一个带有一个对象的数组,一个空字典:

var places = [Dictionary<String, String>()]

因此,您尝试append字典(具有三个键,namelatlong)的尝试将适用于此演绎。但我不认为这是你的意图,因为该数组现在有两个项目,原始的空字典和你刚添加的新字典。

我怀疑你真的想要一个空的数组字典,即:

var places = [Dictionary<String, String>]()

或者更简单:

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

更好的是,我可能会定义Place类型:

struct Place {
    let name: String
    let latitude: Double
    let longitude: Double
}

然后将places定义为该类型的数组:

var places = [Place]()

然后插入一个这样的地方:

places.append(Place(name: "Taj Mahal", latitude: 27.175277, longitude: 78.042128))

如果您愿意,您可以明确定义Place其中latitudelongitude也是字符串。适合您的应用程序。