我想将一个项插入到结构中的数组中。我有一类食物
class Food {
var name: String
var category: String
}
它已被初始化。我创建了一个结构来将不同的食物项包含在组中,并将该结构放在一个数组中。
struct Group {
var title: String
var foods: [Food]
mutating func add(food: Food) {
foods.append(food)
}
var groups = [Group]()
两个变量都被初始化,但似乎变异函数不起作用。当我尝试添加这样的新食品:
let newFood = Food(name: "Banana", category: "Fruit")
let foodType = newFood.category
for group in groups {
if foodType == group.title {
// this is what isn't working
group.add(food: newFood)
} else {
let tempGroup = Group(title: foodType, foods: [newFood])
groups.append(tempGroup)
}
我直接在评论//this is what isn't working
下面的行中出现错误" group是一个常量且无法变异"。但我以为我通过制作mutating func add(food: Food)
来解决这个问题。
如何才能将newFood项附加到groups数组中的正确部分?
答案 0 :(得分:0)
您正在使用for循环中的本地副本。而不是你可以指数。
struct Group {
var title: String
var foods: [Food]
mutating func add(food: Food) {
foods.append(food)
}
}
var groups = [Group]()
for i in 0..<groups.count {
if foodType == groups[i].title {
groups[i].add(food: newFood)
}
}
答案 1 :(得分:0)
你的for循环中声明的'group'与'groups'数组中的实例不同。它只是您要修改的元素的常量副本。因为struct Group是'Value Type',而不是'Reference Type'。