我可以知道这两个字典声明之间的区别吗?
var places = [String: String]()
var places = [Dictionary<String, String>()]
当我尝试以这种方式追加时,为什么只有第二种声明方式有效:
places.append(["name":"Taj Mahal", "lat":"27.175277", "lon":"78.042128"])
感谢您的帮助。
答案 0 :(得分:4)
这是一本简单的字典:
var places = [String: String]()
显然,尝试在字典上调用append
将无效。
你的第二个演绎是一个带有一个对象的数组,一个空字典:
var places = [Dictionary<String, String>()]
因此,您尝试append
字典(具有三个键,name
,lat
和long
)的尝试将适用于此演绎。但我不认为这是你的意图,因为该数组现在有两个项目,原始的空字典和你刚添加的新字典。
我怀疑你真的想要一个空的数组字典,即:
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
其中latitude
和longitude
也是字符串。适合您的应用程序。