【发布时间】:2019-12-09 09:45:28
【问题描述】:
我有一个视图,它应该在 beta 4 中渲染一个 GridView,一切都很好,但是在 Xcode 11 的 beta 5 和 macOS Catalina 的 beta 5 中它停止了工作。
struct List : View {
var rows: [[Int]]
var spacing: CGFloat = (screen.width-330)/4
var list: [ReminderModel]
var number: Int
var body: some View {
return VStack {
ForEach(rows, id: \.self) { row in
HStack(spacing: self.spacing) { //The error is at this bracket
ForEach(row) { item in
Reminder(closed: self.list[item].closed, text: self.list[item].text)
self.number % 3 == 0 ? nil : VStack() {
self.number-1 == item ? AddReminder() : nil
}
}
Spacer()
}.padding(.top, self.spacing).padding(.leading, self.spacing)
}
if self.number % 3 == 0 {
HStack() {
AddReminder().padding(.leading, self.spacing).padding(.top, self.spacing)
Spacer()
}
}
}
}
}
错误: 无法推断复杂的闭包返回类型;添加显式类型以消除歧义
更新 1: 我发现问题出在这部分代码上:
self.number % 3 == 0 ? nil : VStack() {
self.number-1 == item ? AddReminder() : nil
}
我也试过了,但也没用:
if (self.number % 3 != 0 && self.number-1 == item) {
AddReminder()
}
【问题讨论】:
-
把花括号里的所有东西都拿出来,每次放回去一点,直到找到真正的问题。
-
问题是第二个 ForEach 循环,但它在 beta 4 中有效,所以我不知道该怎么做
-
我昨天在一个小组里,我们正在做 SwiftUI 编程工作。有些人在 Catalina Beta 4 中安装了 Beta 5,但他们遇到了问题。这可能是其中的一部分。我平时会做的不是使用 ForEach() 而是使用常规的 for...in
标签: swift swiftui beta xcode11