向字典添加额外的项目
Adding additional items to dictionary
想在这个组合中添加 John 和 Peter:
var myData0: [String: String] = ["Item": "Milk", "Description": "Milk is white", "DrinksMilk": "Peter"]
myData0["DrinksMilk"] = "John"
println(myData0)
Println 只返回 John 而不是 Peter AND John。有没有办法在不覆盖 Peter 的情况下添加 John?
如果你想保留字典的字符串值,你可以这样做
var myData0: [String: String] = ["Item": "Milk", "Description": "Milk is white", "DrinksMilk": "Peter"]
myData0["DrinksMilk"] = myData0["DrinksMilk"]! + ", John"
println(myData0)
如果不是,您可以像这样将字典值的类型更改为 AnyObject :
var myData0: [String: AnyObject] = ["Item": "Milk", "Description": "Milk is white", "DrinksMilk": "Peter"]
myData0["DrinksMilk"] = [myData0["DrinksMilk"]!, "John"]
println(myData0)
您似乎正试图将数据类型编码到字典中。一个更好的方法,不知道更多关于你的具体问题,是为此定义一个 class:
class Drink {
var name:String
var desc:String
var drinkers:[Person]
// ...
func addDrinker (person:Person) {
drinkers.append(person)
}
}
您已经声明您的字典保存 String
类型的值,但是,正如您所描述的,现在您希望字典值为 String
或 Array
。这些类型值类型的常见类型是 Any
(如果您导入了 Foundation,它可以是 AnyObject
;但这是 Swift 异常)。然后,您需要 'fight' 类型系统将 "DrinksMilk" 字段强制为可修改数组并添加 "John".
// First extract `"DrinksMilk"` and force it to a mutating array:
var drinkers:[String] = myData0["DrinksMilk"]! as [String]
// Add the new drinker
drinkers.append("John")
// Reassign back into data
myData0["DrinksMilk"] = drinkers
想在这个组合中添加 John 和 Peter:
var myData0: [String: String] = ["Item": "Milk", "Description": "Milk is white", "DrinksMilk": "Peter"]
myData0["DrinksMilk"] = "John"
println(myData0)
Println 只返回 John 而不是 Peter AND John。有没有办法在不覆盖 Peter 的情况下添加 John?
如果你想保留字典的字符串值,你可以这样做
var myData0: [String: String] = ["Item": "Milk", "Description": "Milk is white", "DrinksMilk": "Peter"]
myData0["DrinksMilk"] = myData0["DrinksMilk"]! + ", John"
println(myData0)
如果不是,您可以像这样将字典值的类型更改为 AnyObject :
var myData0: [String: AnyObject] = ["Item": "Milk", "Description": "Milk is white", "DrinksMilk": "Peter"]
myData0["DrinksMilk"] = [myData0["DrinksMilk"]!, "John"]
println(myData0)
您似乎正试图将数据类型编码到字典中。一个更好的方法,不知道更多关于你的具体问题,是为此定义一个 class:
class Drink {
var name:String
var desc:String
var drinkers:[Person]
// ...
func addDrinker (person:Person) {
drinkers.append(person)
}
}
您已经声明您的字典保存 String
类型的值,但是,正如您所描述的,现在您希望字典值为 String
或 Array
。这些类型值类型的常见类型是 Any
(如果您导入了 Foundation,它可以是 AnyObject
;但这是 Swift 异常)。然后,您需要 'fight' 类型系统将 "DrinksMilk" 字段强制为可修改数组并添加 "John".
// First extract `"DrinksMilk"` and force it to a mutating array:
var drinkers:[String] = myData0["DrinksMilk"]! as [String]
// Add the new drinker
drinkers.append("John")
// Reassign back into data
myData0["DrinksMilk"] = drinkers