我的目标是创建一个 SwiftUI 结构,它可以按顺序生成数据的滚动视图,其中数据和 data_view 在 ScrollView 中放在一起。
我从 ForEach 行上的这段代码中得到标题错误。数组的类型似乎无关紧要,我将其设置为“任何”,并得到了同样的错误。
- 如果用英语句子说,“(_) -> _”是什么? “带下划线的函数,返回下划线”没有任何意义。
- 什么会让这段代码做我想要的?
- 这甚至是最好的方法吗?(我正计划对其进行工作以使代码更通用,例如为视图函数创建一个变量,但我想在更进一步之前得到一个工作的东西)
import SwiftUI
protocol DatedOrPrioritizedStruct {
var id: UUID {get}
var priority: Float {get set} ///Priority must be set
var start: Date? {get set} ///Could be nil. Used in conjunction with priority if set.
}
struct TimeLine : View {
var data: [DatedOrPrioritizedStruct]
var body: some View {
GeometryReader { geometry in
NavigationView {
VStack {
ScrollView {
ForEach(self.data, id: \.self) { item in
//^-ERROR redline here
TaskView(task: item).frame(minWidth: 0, idealWidth: geometry.size.width * 0.80, maxWidth: geometry.size.width, alignment: .leading)
}
}.frame(minWidth: 0, maxWidth: geometry.size.width, alignment: .leading)
.navigationBarTitle("Do The First Thing", displayMode: .large)
}
}.navigationBarHidden(true)
.navigationBarBackButtonHidden(true)
}
}
}
任务类:
public class Task: DatedOrPrioritizedStruct, Identifiable, Equatable {
public static func == (lhs: Task, rhs: Task) -> Bool {
return lhs.id == rhs.id
}
public let id = UUID()
var title: String
var creation: Date
var priority: Float
var start: Date?
var deadline: Date?
var completed: Date?
var note: String?
var recur: Double?
var duration: TimeInterval
public init (_ title: String) {
self.title = title
self.creation = Date()
self.priority = 3.0
self.start = nil
self.deadline = nil
self.completed = nil
self.note = nil
self.recur = nil
self.duration = 3600.0
}
public init (_ title: String, priority: Float) {
self.title = title
self.creation = Date()
self.priority = priority
self.start = nil
self.deadline = nil
self.completed = nil
self.note = nil
self.recur = nil
self.duration = TimeInterval(9 * 24 * 3600 + 3 * 3600 + 20 * 60)
}
}