【发布时间】:2021-09-13 17:23:54
【问题描述】:
我有一个用项目列表初始化的视图,然后在初始化过程中,我们需要随机选择一个项目。像这样的:
struct ItemsView: View {
var items:[Item]
@State var current:Item?
init(items:[Item] = []) {
self.items = items
if items.count > 0 {
let index = Int.random(in: 0..<items.count)
self.current = items[index] // doesnt work
}
if current != nil {
print("init with", self.items.count, "items. Chose", current!)
}
}
// ...
}
ItemsVew 的工作是一次随机显示一个项目,所以我们从随机选择一个项目开始,但据我所知,self.current = items[index] 实际上并没有做任何事情,原因是我不明白。所以要么我在做一些愚蠢的事情,要么我正在考虑如何以某种方式错误地解决这个问题。
那么如何在 init 函数中初始化一个 State 变量。我试过了:
self.current = State(initialValue: items[index])
但这只会触发编译器错误。那么我们如何选择一个将在视图显示时使用的初始项呢?
Cannot assign value of type 'State<Item>' to type 'Item'
我做错了什么?
【问题讨论】: