Ios 如何跟踪和保存传递到my view SwiftUI的数据
我正在编写一个待办事项列表应用程序,下面是我的代码:Ios 如何跟踪和保存传递到my view SwiftUI的数据,ios,swiftui,swiftui-form,Ios,Swiftui,Swiftui Form,我正在编写一个待办事项列表应用程序,下面是我的代码: struct TaskItem: View { @State var task : Task @Environment(\.presentationMode) var presentationMode: Binding<PresentationMode> @EnvironmentObject var taskData: UserData @ObservedObject private var keyboard = Keyboard
struct TaskItem: View {
@State var task : Task
@Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>
@EnvironmentObject var taskData: UserData
@ObservedObject private var keyboard = KeyboardResponder()
var body: some View {
Form{
Section(header: Text("Details").font(.headline)){
HStack{
TextField("Title", text: $task.title ).font(Font.headline)
}
TextField("Description", text: $task.description)
.font(Font.body)
}
Section{
Toggle("Mark as Done", isOn: $task.isDone)
}
Section{
Picker(selection: $task.priority, label: Text("priority")) {
Text("very important").tag(2)
Text("important").tag(1)
Text("need to do").tag(0)
}.pickerStyle(SegmentedPickerStyle()).padding(5)
}
}
.padding(.bottom, keyboard.currentHeight)
.edgesIgnoringSafeArea(.bottom)
.animation(.easeOut(duration: 0.16))
.navigationBarItems(trailing: Button(action: {
//save data
var result :[Task]
result = save(id: self.task.id,
creationDate: self.task.creationDate,
creationDateYear: self.task.creationDateYear,
creationDateMonth: self.task.creationDateMonth,
creationDateDay: self.task.creationDateDay,
dueDate: self.task.dueDate,
time: self.task.time,
title: self.task.title,
description: self.task.description,
priority: self.task.priority,
isDone: self.task.isDone, taskData: self.taskData.taskData)
self.taskData.taskData = result
self.presentationMode.wrappedValue.dismiss()
}, label:{
Text("save")
}))
// here I put my save code
}
这就是你现在拥有的。这正是我们所期待的
Form {
.....
}
不是别的,只是SwiftUI.Form的构造函数
return语句可以省略,因为它只是一个表达式
var body: some View {
let somtething = ....
Form {
....
}
}
这是错误的。为什么?错误消息解释得非常清楚。函数声明了一个不透明的返回类型,但在其主体中没有用于推断基础类型的返回语句
错误消息的这一部分“函数声明””有点不清楚,除非您考虑到Swift中函数和闭包的区别
var body: some View {
....
}
可以重写为func语句
func body()-> some View {
...
}
也许有一天,编译器发出的错误信息会更清晰
如果你真的喜欢,你可以做
var body: some View {
let somtething = ....
return Form {
....
}
}
我最好避免那样。为了更好的可读性和易于维护您的代码,将所有的逻辑放在您的模型中。按照设计目的使用SwiftUI,并充分利用其声明性语法
这就是你现在拥有的。这正是我们所期待的
Form {
.....
}
不是别的,只是SwiftUI.Form的构造函数
return语句可以省略,因为它只是一个表达式
var body: some View {
let somtething = ....
Form {
....
}
}
这是错误的。为什么?错误消息解释得非常清楚。函数声明了一个不透明的返回类型,但在其主体中没有用于推断基础类型的返回语句
错误消息的这一部分“函数声明””有点不清楚,除非您考虑到Swift中函数和闭包的区别
var body: some View {
....
}
可以重写为func语句
func body()-> some View {
...
}
也许有一天,编译器发出的错误信息会更清晰
如果你真的喜欢,你可以做
var body: some View {
let somtething = ....
return Form {
....
}
}
我最好避免那样。为了更好的可读性和易于维护您的代码,将所有的逻辑放在您的模型中。按照设计使用SwiftUI,并充分利用它的声明性语法。您能进一步解释一下写入正文的含义吗?当我将//保存数据代码块从“保存”按钮移到正文中时,出现了什么错误“函数声明了一个不透明的返回类型,但在其主体中没有可以推断基础类型的返回语句”您能进一步解释一下写入主体的含义吗?当我将//save data code块从save按钮中移出时,会出现什么错误,但是在它的主体中没有返回语句来推断底层类型“谢谢,我将把逻辑取出到我的模型中,并将save函数放在那里谢谢,我将把逻辑取出到我的模型中,并将save函数放在那里