数据:
[
{ firstName: "Foo", lastName: "Bar" },
{ firstName: "John", lastName: "Doe" }
]
如何使用swift数组和字典来构建这种结构?这个数据显示了数组中的字典,对吧?所以我建议:
var persons:Array = [Dictionary<String, String>()]
但这给了我错误:
Cannot convert the expressions type () to type Array<T>
有什么想法吗?
答案 0 :(得分:4)
正确的方法是:
var persons = [Dictionary<String, String>]()
相当于:
var persons = [[String : String]]()
你的代码所做的是创建一个用Dictionary<String, String>
实例填充的数组,而我假设你想要一个包含Dictionary<String, String>
类型元素的数组的空实例。
答案 1 :(得分:2)
你有哪个版本的Xcode? 您的代码应该可以正常工作,但行:
var persons:Array = [Dictionary<String, String>()]
使用第一个空字典创建数组,请尝试以下方法:
var persons:Array = [Dictionary<String, String>]()
var dic1 = ["Name" : "Jon"]
var dic2 = ["Surname" : "Smith"]
persons.append(dic1)
persons.append(dic2)
println(persons)
答案 2 :(得分:1)
你确定你真的想要一个数组中的字典吗?您提供的代码表示更多带有命名列的数组,可以使用以下内容实现:
struct Name {
var firstName : String
var lastName : String
}
var persons1 : Array<Name> = [
Name(firstName: "Foo", lastName: "Bar"),
Name(firstName: "John", lastName: "Doe")
]
persons1[0].firstName // "Foo"
var persons2 : Array<(firstName: String, lastName:String)> = [
(firstName: "Mary", lastName: "Mean"),
(firstName: "Foo", lastName: "Bar"),
(firstName: "John", lastName: "Doe")
]
persons2[1].firstName // "Bar"
这些是正确的数组,并使用下标来解决。字典类型通常是键和值的组合,即昵称作为键,名称作为值。
var nickNames : [String:String] = [
"mame" : "Mary Mean",
"foba" : "Foo Bar",
"jodo" : "John Doe"]
nickNames["mame"]! // "Mary Mean"
在这里我们查找键值,并获得一个可选的值作为回报,我强行打开...
所有这些都可以相当容易地添加,但请注意,命名的元组变体persons2
不遵循建议的做法。另请注意,字典数组允许包含在我上次注入时建议的不同键上。
persons1.append( Name(firstName: "Some", lastName: "Guy") )
persons2.append( firstName: "Another", lastName: "Girl" )
nickNames["anna"] = "Ann Nabel"
// Array of Dictionaries
var persons : [[String:String]] = [
[ "firstName" : "Firstly", "lastName" : "Lastly"],
[ "firstName" : "Donald", "lastName" : "Duck"]
]
persons.append( ["firstName" : "Georg", "middleName" : "Friedrich", "lastName" : "Händel"] )
答案 3 :(得分:0)
这样的事情对你有用:
var persons: Array<Dictionary<String, String>> = Array()
现在您可以添加名称:
persons.append(["firstName": "Foo", "lastName": "Bar"]);
persons.append(["firstName": "John", "lastName": "Doo"]);
注意:如果您不安全如何使用文字,请不要使用它们。