我有一个将信息保存到核心数据的表单,然后我获取数据并将其传递到产品卡,该产品卡将被放入具有不同数据的产品卡列表中。当我单击产品卡进入卡的详细信息时,查看时数据不正确。我需要产品详细信息包括主视图中产品卡上显示的数据,而不是显示name2
。我正在尝试使用 * 实现此目的 * 核心数据**。
核心数据将title
和subTitle
作为Strings
name
、title
、subTitle
将登录到我正在使用的@NSManaged public var
从另一个视图按表单显示产品卡详细信息
// this struct will be on the home screen
struct productCard: View {
@Environment (\.managedObjectContext) var managedObjContext
@FetchRequest(entity: DataSet.entity(), sortDescriptors: [NSSortDescriptor(keyPath: \DataSet.name, ascending: true)])
var dataSet: FetchedResults <DataSet>
var body: some View {
ScrollView {
HStack {
ForEach( self.dataSet, id: \.self){ DataSet in
NavigationLink {
productCardDetails(dataSet: _dataSet)
} label: {
HStack{
Text(DataSet.self.title ?? "Error")
.font(.title3)
.fontWeight(.bold)
.foregroundColor(.red)
Spacer()
Text(DataSet.self.subTitle ?? "Error")
.font(.caption)
.foregroundColor(.red)
}.padding(.horizontal, 10)
}
}
}
}
}
}
产品卡将把用户带入productCardDetails
struct productCardDetails: View {
@Environment (\.managedObjectContext) var managedObjContext
@FetchRequest(sortDescriptors: []) var dataSet: FetchedResults <DataSet>
var body: some View {
ZStack(alignment: .bottom) {
NavigationView {
Form{
List(dataSet[0..<1], id:\.self) { DataSet in
Section{
Text(DataSet.self.title ?? "error")
.font(.title2)
.fontWeight(.bold)
Text(DataSet.self.subTitle ?? "error")
.font(.subheadline)
.fontWeight(.light)
.multilineTextAlignment(.leading)
}
}
}
}
}
}
}
举一个例子来演示发生了什么,当我从我拥有的表单中创建了5张卡片时,在主屏幕上它将显示5个productCard
,所以它将在主视图上显示为productCard1
,productCard2
,productCard3
,productCard4
,productCard5
,在这些卡片中,它们都有各自唯一的titles
和subTitles
。但例如,当我单击productCard4
时,它将显示productCard1
1条答案
按热度按时间ccrfmcuu1#
好吧,你在
productCardDetails
视图中使用了一个集合,并且只使用了第一个条目。最好传递你想显示的DataSet
。在详细视图中:
您确实需要开始使用默认命名约定。