【问题标题】:What is the difference between [Dictionary<String, String>()] and [String: String]()[Dictionary<String, String>()] 和 [String: String]() 有什么区别
【发布时间】:2016-03-26 13:35:22
【问题描述】:

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

var places = [String: String]()

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

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

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

感谢您的帮助。

【问题讨论】:

  • 第二个语法不正确,如果你不喜欢声明 Array>

标签: ios iphone swift dictionary


【解决方案1】:

这是一个简单的字典:

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 也是字符串。适合您的应用程序的任何内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-09
    • 1970-01-01
    • 2021-12-21
    • 2012-05-21
    • 2011-10-25
    • 2019-02-05
    相关资源
    最近更新 更多