Arrays 如何使用Swift将字典添加到数组中?
我正在尝试将包含人员属性的字典添加到数组中,但它不起作用。我得到以下错误:Arrays 如何使用Swift将字典添加到数组中?,arrays,dictionary,swift,Arrays,Dictionary,Swift,我正在尝试将包含人员属性的字典添加到数组中,但它不起作用。我得到以下错误: [(任何)]与UInt8不相同 这是我的密码: var people = [Any]() class Database { class func addPerson(dict: [String : Any]) -> Void { people += dict } } Database.addPerson(["name" : "Fred"]) Array上的+=运算符对应于Arr
[(任何)]与UInt8不相同
这是我的密码:
var people = [Any]()
class Database {
class func addPerson(dict: [String : Any]) -> Void {
people += dict
}
}
Database.addPerson(["name" : "Fred"])
Array
上的+=
运算符对应于Array.extend
,它采用SequenceType
而不是单个元素。如果将dict
包装在数组中
,则+=
将起作用:
people += [dict]
但是,使用append
函数更简单、更高效:
people.append(dict)
旁注:
我不知道为什么要使用Any
作为数组的元素类型和字典的值类型(也许你有一个很好的理由),但是如果可能的话,通常应该避免使用。在这种情况下,我将dict
声明为[String:String]
和people
声明为[[String:String]]
:
var people = [[String: String]]()
class Database {
class func addPerson(dict: [String : String]) -> Void {
people.append(dict)
}
}
Database.addPerson(["name" : "Fred"])
如果您需要能够在词典中存储多种类型,有几种方法可以做到这一点
直接使用NSDictionary
将词典
声明为[String:AnyObject]
使用作为值类型(如果您只需要支持少数类型,因为所有内容都保持强类型,则这通常是Swift中的最佳选项)
使用enum
的快速示例(在其他SO问题中有相当多的示例):
Array
上的+=
运算符对应于Array.extend
,它采用SequenceType
而不是单个元素。如果将dict
包装在数组中
,则+=
将起作用:
people += [dict]
但是,使用append
函数更简单、更高效:
people.append(dict)
旁注:
我不知道为什么要使用Any
作为数组的元素类型和字典的值类型(也许你有一个很好的理由),但是如果可能的话,通常应该避免使用。在这种情况下,我将dict
声明为[String:String]
和people
声明为[[String:String]]
:
var people = [[String: String]]()
class Database {
class func addPerson(dict: [String : String]) -> Void {
people.append(dict)
}
}
Database.addPerson(["name" : "Fred"])
如果您需要能够在词典中存储多种类型,有几种方法可以做到这一点
直接使用NSDictionary
将词典
声明为[String:AnyObject]
使用作为值类型(如果您只需要支持少数类型,因为所有内容都保持强类型,则这通常是Swift中的最佳选项)
使用enum
的快速示例(在其他SO问题中有相当多的示例):
我想没有内置的操作符。您可以使用:
people.append(dict)
// or
people += [dict as Any]
我想没有内置的操作符。您可以使用:
people.append(dict)
// or
people += [dict as Any]
作为补充说明,是否可以在字典中接受多种类型?例如[String:String或Int]()
有两种方法:使用NSDictionary
或将字典声明为[String:AnyObject]
。在这两种情况下,值都可以是任何引用类型(因此不限于string和int)。有@Antonio提到的两种方法和另一种方法。我用更多的信息编辑了我的答案。作为旁注,是否可以在字典中接受多种类型?例如[String:String或Int]()
有两种方法:使用NSDictionary
或将字典声明为[String:AnyObject]
。在这两种情况下,值都可以是任何引用类型(因此不限于string和int)。有@Antonio提到的两种方法和另一种方法。我用更多的信息编辑了我的答案。