我在练习一些代码,一些问题。
这是密码
class Food {
let name:String
var fruits:[Fruits]?
init(name:String) {
self.name = name
}
}
class Fruits {
let name:String
let capacity:Int
init(name:String, capacity:Int) {
self.name = name
self.capacity = capacity
}
}
var macFood: Food = Food(name: "macFood")
macFood.fruits
macFood.fruits = [Fruits(name: "Apple", capacity: 1), Fruits(name: "Banana", capacity: 2)]
macFood
macFood.fruits
macFood.fruits += [Fruits(name: "Grape", capacity: 3)]所有代码都很好,打印得很好,但最后一行出现了问题。
我以为macFood.fruits是数组。
因为,macFood.fruits =水果(名称:"Apple",容量: 1),水果(名称:"Banana",容量: 2)工作。
所以我想我可以使用'+=‘运算符来添加另一个元素。
但是在最后一行,macFood.fruits +=果树(名字:“葡萄”,容量: 3)崩溃了。
错误消息是
‘二进制运算符'+=’不能应用于‘+=’类型的操作数?和‘macFood.fruits’+=水果(名称:“葡萄”,容量:3)
‘期望一个类型的参数列表'(inout,S)’macFood.fruits +=果树(名称:“葡萄”,容量: 3)'
问题
谢谢!
发布于 2018-09-06 12:08:25
yourArray.append(object)添加另一个元素发布于 2018-09-06 12:03:31
抱歉我没注意到。
您的问题是“macFood.fruits”是可选的,您不能在可选类型中添加非可选类型。
或者设置非可选的水果,比如
var fruits:[Fruits] = []或者使用追加方法,例如:
if macFood.fruits?.append(Fruits(name: "Grape", capacity: 3)) == nil {
myArray = [Fruits(name: "Grape", capacity: 3)]
}发布于 2018-09-06 12:31:43
您需要像这样声明Food
class Food {
let name:String
var fruits = [Fruits]()
init(name:String) {
self.name = name
}
}
class Fruits {
let name:String
let capacity:Int
init(name:String, capacity:Int) {
self.name = name
self.capacity = capacity
}
}使用
let macFood: Food = Food(name: "macFood")
macFood.fruits = [Fruits(name: "Apple", capacity: 1), Fruits(name: "Banana", capacity: 2)]
macFood.fruits += [Fruits(name: "Grape", capacity: 3)]https://stackoverflow.com/questions/52203647
复制相似问题