如何将多个字典添加到数组中

时间:2018-03-07 02:28:57

标签: swift swift3

我已将字典添加到数组中。我想在数组中添加第二个字典。怎么做?

        var dict = [String: AnyObject]()

        dict = ["description": self.odrRefTxt.text as AnyObject,
               "weight": self.pWeight as AnyObject,
               "quantity": self.qtyTxt.text as AnyObject,
               "unitPrice": self.valueTxt.text as AnyObject,
               "currency": self.pCurrency as AnyObject]

        // saving to memory
        UserDefaults.standard.set(dict, forKey: "addItem")

        // getting from memory
        let addItem = UserDefaults.standard.value(forKey: "addItem")
        print(addItem as Any)


        //add new item into list of items
        self.itemArr.append(addItem as Any)
        print(self.itemArr)

以下是print的结果:

 //print addItem
Optional({
        currency = "";
        description = "Toyo Proxes";
        quantity = 4;
        unitPrice = 100;
        weight = 0;
    })

//print self.itemArr
    [Optional({
        currency = "";
        description = "Toyo Proxes";
        quantity = 4;
        unitPrice = 100;
        weight = 0;
    })]

例如,我想将第二个字典添加到数组中以打印出如下结果:

//print self.itemArr
    [Optional({
        currency = "";
        description = "Toyo Proxes";
        quantity = 4;
        unitPrice = 100;
        weight = 0;
    }, 
{
        currency = "";
        description = "Yokohama Advan";
        quantity = 2;
        unitPrice = 250;
        weight = 0;
    })]

1 个答案:

答案 0 :(得分:0)

您将UserDefaults中的内容保存为Any,因此只需将其转换为原始类型即可。

使用@rmaddy的建议修改。

var itemArr = [[String: Any]]()

var dict = [String: Any]()
dict = ["description": 1,
        "weight": 2,
        "quantity": 3,
        "unitPrice": "abc",
        "currency": "123"]

// saving to memory
UserDefaults.standard.set(dict, forKey: "addItem")

// getting from memory
if let addItem = UserDefaults.standard.dictionary(forKey: "addItem") {
    itemArr.append(addItem)
}

let dict2:[String: Any] = ["description": 4,
        "weight": 5,
        "quantity": 6,
        "unitPrice": "xyz",
        "currency": "456"]

itemArr.append(dict2)
print(itemArr)

// prints out:
// [["description": 1, "quantity": 3, "weight": 2, "currency": 123, "unitPrice": abc], ["description": 4, "weight": 5, "quantity": 6, "currency": "456", "unitPrice": "xyz"]]