首页 > 解决方案 > “DailyScrum”类型的值没有使用根类型“DailyScrum”的键路径的动态成员“历史”

问题描述

我正在学习 Swift 教程;iOS 应用开发教程。

在状态管理,更新应用程序数据第 2 步第 1 步、第 3 步、第 4 步,这里有一个错误。

我已经在谷歌上搜索了两个小时,但我找不到它。请帮我!

其他错误是谷歌搜索,发现问题或解决方案。

.onDisappear {
            scrumTimer.stopScrum()
            let newHistory = History(attendees: scrum.attendees, lengthInMinutes: 
scrumTimer.secondsElapsed / 60)
            scrum.history.insert(newHistory, at: 0) // <- These is an error here.
        }

有三个错误消息。

  1. 无法调用非函数类型“绑定”的值

  2. 引用下标 'subscript(dynamicMember:)' 需要包装器 'Binding'

  3. “DailyScrum”类型的值没有使用根类型“DailyScrum”的键路径的动态成员“历史”

    Section(header: Text("History")) {
                    if scrum.history.isEmpty {  // <- These is an 
                                                //   error here.
                        Label("No meeting yet", systemImage: 
    "calendar.badge.exclamationmark")
                    }
                    ForEach(scrum.history) { history in // <- 
                                     // These is an error here.
                        HStack {
                            Image(systemName: "calendar")
                            Text(history.date, style: .date)
                        }
                    }
                }
    

我认为这是由于相同原因造成的错误。

标签: iosswiftswiftui

解决方案


你没有做错任何事,除了没有注意到苹果在他们的教程中没有明确说明的事情。

与许多循序渐进的教程不同,当您完成该教程的一章时,您最终得到的代码与下一章中的起始代码不同。

因此,当您完成有关管理状态和生命周期的章节时,DailyScrum具有以下属性:

let id: UUID
var title: String
var attendees: [String]
var lengthInMinutes: Int
var color: Color

但是,如果您下载下一章的代码,更新应用程序数据,则起始项目已扩展DailyScrum并添加了一个新History对象:

let id: UUID
var title: String
var attendees: [String]
car lengthInMinutes: Int
var color: Color
var history: [History]

除非您在教程建议之外对代码进行自己的修改,否则我建议您在每章末尾放弃您的工作项目,并StartingProject从新章节开头的 ZIP 文件中提取。这样,您应该能够继续跟进,而不必总是担心 Apple 在各章之间添加了哪些新代码。


推荐阅读