在這段代碼中,我輸入了兩個值,load1并且通過將和load2相加來計算速率。工資總額是通過將清單上的費率相加來計算的。但是,當我洗掉串列上的任何負載時,它應該從總工資中減去相同的負載。相反,每次它減去我第一次洗掉的相同數量的負載。因此,當您使用編輯按鈕洗掉它時,它只會從串列中洗掉負載。但是,從總工資中減去金額是不正確的。load1load2gp
有人可以幫我嗎?
struct Calculation: View {
@State var load1 = Float()
@State var load2 = Float()
@State var gp : Float = 0
@State var rate: Float = 0
@ObservedObject var taskStore = TaskStore()
func addNewToDo() {
taskStore.tasks.append(Task(id: String(taskStore.tasks.count 1), toDoItem: " Earning: = \(rate.description)" ))
}
var body: some View {
NavigationView {
VStack {
List {
Section(header:Text("load 2"))
{
TextField("Enter value of load 1", value: $load1, format: .number)
TextField("Enter value of load 1", value: $load2, format: .number)
}
HStack {
Button(String(format: "Add Load"), action:
{
print("pay for the shift is ")
print(Rocky(mypay: rate))
gp = rate
})
Button(action: {addNewToDo(); Rocky(mypay: rate) }, label: {
Text(" ")
})
}
ForEach(self.taskStore.tasks) {
task in
Text(task.toDoItem)
}.onMove(perform : self.move)
.onDelete(perform : self.delete) //For each
}.navigationBarTitle("SHIFTS")
.navigationBarItems(trailing: EditButton()) //List
Text("Gross Pay = $\(gp) ")
}.onAppear()
} }
func Rocky(mypay: Float)
{ rate = load1 load2
print("Sus \(gp)")
}
func move(from source : IndexSet, to destination : Int)
{
taskStore.tasks.move(fromOffsets: source, toOffset: destination)
}
func delete(at offsets : IndexSet) {
taskStore.tasks.remove(atOffsets: offsets)
gp -= rate
}
}
struct BlueTwoView_Previews: PreviewProvider {
static var previews: some View {
Calculation()
}
}
這是另一個檔案
struct Task : Identifiable {
var id = String()
var toDoItem = String()
}
class TaskStore : ObservableObject {
@Published var tasks = [Task]()
}
uj5u.com熱心網友回復:
如果您將 a 存盤Float在您的 中Task,而不僅僅是一個String值,您可以使用它來添加/減去您的gp. 最基本的更改如下所示(但是,在以這種方式實施之前,請務必查看答案的后半部分):
struct Task : Identifiable {
var id = String()
var toDoItem = String()
var amount : Float = 0 //<-- Here
}
class TaskStore : ObservableObject {
@Published var tasks = [Task]()
}
struct Calculation: View {
@State var load1 = Float()
@State var load2 = Float()
@State var gp : Float = 0
@State var rate: Float = 0
@ObservedObject var taskStore = TaskStore()
func addNewToDo() {
taskStore.tasks.append(Task(id: String(taskStore.tasks.count 1), toDoItem: " Earning: = \(rate.description)", amount: rate))
}
var body: some View {
NavigationView {
VStack {
List {
Section(header:Text("load 2"))
{
TextField("Enter value of load 1", value: $load1, format: .number)
TextField("Enter value of load 1", value: $load2, format: .number)
}
HStack {
Button(String(format: "Add Load"), action: {
print("pay for the shift is ")
print(Rocky(mypay: rate))
gp = rate
})
Button(action: {
addNewToDo()
Rocky(mypay: rate)
},
label: {
Text(" ")
})
}
ForEach(self.taskStore.tasks) { task in
Text(task.toDoItem)
}
.onMove(perform : self.move)
.onDelete(perform : self.delete) //For each
}
.navigationBarTitle("SHIFTS")
.navigationBarItems(trailing: EditButton()) //List
Text("Gross Pay = $\(gp) ")
}.onAppear()
}
}
func Rocky(mypay: Float)
{
rate = load1 load2
print("Sus \(gp)")
}
func move(from source : IndexSet, to destination : Int)
{
taskStore.tasks.move(fromOffsets: source, toOffset: destination)
}
func delete(at offsets : IndexSet) {
if let index = offsets.first { //<-- Here
let task = taskStore.tasks[index]
gp -= task.amount
}
taskStore.tasks.remove(atOffsets: offsets)
}
}
此外,您可以重構代碼,使其gp不是@State,而是計算屬性。然后,它只反映串列中的總金額Task——當串列發生變化時,無需手動添加/計算。同樣,String toDoItem可能是您的Task.
struct Task : Identifiable {
var id = String()
var amount : Float = 0
}
extension Task {
var toDoItem: String {
"Earning: = \(amount)"
}
}
class TaskStore : ObservableObject {
@Published var tasks = [Task]()
}
struct Calculation: View {
@State var load1 = Float()
@State var load2 = Float()
@State var rate: Float = 0
@ObservedObject var taskStore = TaskStore()
var gp : Float {
taskStore.tasks.reduce(0) { acc, item in
acc item.amount
}
}
func addNewToDo() {
taskStore.tasks.append(Task(id: String(taskStore.tasks.count 1), amount: rate))
}
var body: some View {
NavigationView {
VStack {
List {
Section(header:Text("load 2"))
{
TextField("Enter value of load 1", value: $load1, format: .number)
TextField("Enter value of load 1", value: $load2, format: .number)
}
HStack {
Button(String(format: "Add Load"), action: {
print("pay for the shift is ")
print(Rocky(mypay: rate))
})
Button(action: {
addNewToDo()
Rocky(mypay: rate)
},
label: {
Text(" ")
})
}
ForEach(self.taskStore.tasks) { task in
Text(task.toDoItem)
}
.onMove(perform : self.move)
.onDelete(perform : self.delete) //For each
}
.navigationBarTitle("SHIFTS")
.navigationBarItems(trailing: EditButton()) //List
Text("Gross Pay = $\(gp) ")
}.onAppear()
}
}
func Rocky(mypay: Float)
{
rate = load1 load2
print("Sus \(gp)")
}
func move(from source : IndexSet, to destination : Int)
{
taskStore.tasks.move(fromOffsets: source, toOffset: destination)
}
func delete(at offsets : IndexSet) {
taskStore.tasks.remove(atOffsets: offsets)
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/437378.html
