问题描述
我有一个表单,当按下标记为“保存”的尾随导航栏按钮时,该表单可以保存新客户。然后,我想基于新的客户对象加载新的视图。一种可能的方法可能是激活具有空白视图的导航链接,如下所示:
NavigationLink(destination: CustomerDetailView(customer: currentCustomer),isActive: self.$showCustomerDetail) { EmptyView() }
将showCustomerDetail
设置为true将触发链接。但是要获取currentCustomer
的值,我需要一个动态获取请求,可能使用新的UUID作为谓词。那就是事情分崩离析的地方。我不知道如何将获取请求的结果传递给currentCustomer变量。
以下是代码的有用部分:
导航栏按钮
.navigationBarItems(leading:
Button(action: {
self.presentationMode.wrappedValue.dismiss()
},label: {
Text("Cancel")
}),trailing:
Button(action: {
let newCustomer = Customer(context: self.moc)
newCustomer.id = UUID()
newCustomer.custName = self.name
}
self.appDelegate.saveContext()
self.showCustomerDetail = true
})
},label: {
Text("Save")
})
获取请求
currentCustomer = FetchRequest<Customer>(entity: Customer.entity(),sortDescriptors: [],predicate: nspredicate(format: "id == %@",custID as CVararg))
解决方法
这里是适当的方法(由于newCustomer已经保存到数据库中,因此可以使用):
.navigationBarItems(leading:
Button(action: {
self.presentationMode.wrappedValue.dismiss()
},label: {
Text("Cancel")
}),trailing:
Button(action: {
let newCustomer = Customer(context: self.moc)
newCustomer.id = UUID()
newCustomer.custName = self.name
}
self.appDelegate.saveContext()
self.currentCustomer = newCustomer // << here !!
self.showCustomerDetail = true
})
},label: {
Text("Save")
})