Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何使用Swift将字典添加到数组中?_Arrays_Dictionary_Swift - Fatal编程技术网

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提到的两种方法和另一种方法。我用更多的信息编辑了我的答案。