gpt4 book ai didi

swift - 无法使用类型为“(String)”的参数列表调用 'append'

转载 作者:搜寻专家 更新时间:2023-10-31 22:15:51 25 4
gpt4 key购买 nike

这里有什么问题以及如何解决这个问题?

struct Venue {
let building: String
var rooms: [String]?
}

func addRoom(building: String, room: String) {
if let venueIndex = find(venues.map {$0.building}, building) {
venues[venueIndex].rooms.append(room) //Cannot invoke 'append' with an argument list of type'(String)'
}
}

var venues: [Venue] = [...]

最佳答案

问题是 venues[venueIndex].rooms 不是 [String] 而是 [String]?。可选项没有 append 方法——包裹在它们里面的值可能有,但它们没有。

如果它不是nil,您可以使用可选链来执行追加:

venues[venueIndex].rooms?.append(room)

但是当 roomsnil 时,您可能希望将其初始化为空索引,在这种情况下,您需要进行稍微困惑的分配而不是追加:

venues[venueIndex].rooms = (venues[venueIndex].rooms ?? []) + [room]

但是,值得问问自己,rooms 真的需要是可选的吗?或者它可能只是一个起始值为空的非可选数组?如果是这样,这可能会简化您的大部分代码。

关于swift - 无法使用类型为“(String)”的参数列表调用 'append',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29981750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com