在Xcode11 beta 4中有效但在beta 5中停止工作的代码出现问题

托比亚斯·鲍尔(Tobias Bauer)

我有一个View应该在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()
}
Graycampbell

我将代码简化为可以运行的代码:

struct ContentView: View {
    var rows: [[Int]] = [[0, 1, 2], [3, 4, 5]]

    var body: some View {
        VStack {
            ForEach(rows, id: \.self) { row in
                HStack {
                    ForEach(row) { item in
                        EmptyView()
                    }
                }
            }
        }
    }
}

...我得到这个错误:

在'ForEach'上引用初始值设定项'init(_:content :)'要求'Int'符合'Identifiable'

我猜想以前的betaInt符合,Identifiable而beta 5改变了这一点。因此,要解决此问题,只需将秒数更改ForEach为即可ForEach(row, id: \.self)

更新资料

在删除了我无法运行的代码部分之后,我设法得到了同样的错误。

错误:无法推断复杂的闭包返回类型;添加显式类型以消除歧义

似乎ForEach期望从其主体返回一个视图,而不是您在此处看到的多个视图:

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
    }
}

您正在尝试同时返回aReminder和optional VStack,因此编译器无法确定返回类型应该是什么。这可能在过去有效,因为ForEach以前可以处理元组视图,现在不再处理-我不确定。无论如何,都需要先将更改为ForEachForEach(row, id: \.self)正如我之前指出的,然后将所有内容包装ForEach在一个组中,如下所示:

ForEach(row, id: \.self) { item in
    Group {
        Reminder(closed: self.list[item].closed, text: self.list[item].text)
        self.number % 3 == 0 ? nil : VStack {
            self.number - 1 == item ? AddReminder() : nil
        }
    }
}

我刚刚注意到的最后一件事。您的名字struct不应该是ListList在SwiftUI中已经存在,并且您不应以与框架定义的类型冲突的方式命名自定义视图。我建议您重命名您的视图,以ReminderList充分说明其目的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

对象!= nil在Beta 5中有效,但在Beta 6中无效吗?

在Xcode11 Beta 4中将String(format:,args)与SwiftUI一起使用时出错

Xcode 11 Beta 4 TabbedView 绑定问题

尝试在带有Xcode11 beta4的iOS13上呈现RPSystemBroadcastPickerView时获取NSInvalidArgumentException

如何在Angle 2 Beta中的服务中有效使用Http Component?

iOS 11 Beta 2 / Xcode Beta 3 AutoLayout问题

是否可以在macOS Big Sur中运行Xcode11?

使用SPM在XCode11中添加本地依赖项

UIBarButtonItem工作正常,但在Xcode11和Xcode12中不可见

解决Xcode 11 beta 5中的SwiftUI Path崩溃

在Xcode 6 Beta 4中释放Segue

Xcode 8 beta 4中的shouldAutorotate()函数

Xcode 11 Beta中的字体样式已更改

DefaultPickerStyle在Xcode 11 beta 6 swiftUI中不起作用

INVoiceShortcutCenter.shared.setShortcutSuggestions(suggestions)在iOS 13 Beta中崩溃。Xcode 11 Beta

如何在Xcode 10中打开Xcode 11 Beta 4项目?

txt文件写入在模拟器中有效,但在实际设备xcode中无效

iOS ApplePay PKPaymentAuthorizationViewController未出现在Xcode11 / iOS 13中

Xcode 11 Beta 5 - 模态仅触发一次

Xcode 11 Beta 5-加载插件失败

Xcode 6 beta 2问题导出.ipa:“您的帐户已经具有有效的iOS发行证书”

我可以下载Xcode 11 beta 5的iOS 13 beta 6模拟器吗?

在SwiftUI Xcode 11 Beta 4中使用可绑定对象保存数据

如何在 Xcode11 中的 Swift 中随机播放数组中的音频文件?

Xcode 11 Beta 4存档快速错误

在Xcode11 / iOS13或13.1中自定义UITabBar高度

XCode11错误“在应用程序扩展中,open(_:options:completionHandler :)不可用”

使用完整的位码在xcode11中构建胖框架

onreadystatechange在IE11中有效,但在其他浏览器中无效