SwiftUI-如何获取新创建的对象到导航链接

问题描述

我有一个表单,当按下标记为“保存”的尾随导航栏按钮时,该表单可以保存新客户。然后,我想基于新的客户对象加载新的视图。一种可能的方法可能是激活具有空白视图的导航链接,如下所示:

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")
})