gpt4 book ai didi

swift - 在范围 SwiftUI 中找不到 'entity'

转载 作者:行者123 更新时间:2023-12-04 14:54:18 25 4
gpt4 key购买 nike

我正在尝试将列表中某项的详细信息显示到工作表上。我收到此错误 Cannot find 'entity' in scope 即使它是在详细信息项结构中声明的。

如果工作表位于列表内部,则不会出现此错误,但这会导致仅显示第一个项目的详细信息,即使您选择第一个项目下方的任何其他项目也是如此。

这是一个 macOS 应用。

                @StateObject var vm = CoreDataViewModel()

List {
ForEach(vm.savedEntites) { entity in
Text(entity.name ?? "No Name")
.font(.system(size: 25))
HStack {
Button(action: {vm.deleteMemory(entity: entity)}) {
Label("Delete",systemImage: "trash")

}.foregroundColor(Color(.red))

Button(action: {showingDetailScreen.toggle()}) {
Label("Details", systemImage: "pencil")
}.foregroundColor(Color(.red))
}
}// list ends here
.sheet(isPresented: $showingDetailScreen) {
DetailItemView(entity: entity,isVisible: self.$showingDetailScreen)
}
}

详细项目 View 结构

struct DetailItemView: View  {
var entity: MemoryEntity
@Environment(\.presentationMode) var presentationMode
@Binding var isVisible: Bool


var body: some View {
Text(entity.name ?? "No Name")
HStack {
Button("Exit") {
self.isVisible = false
}
}
.frame(width: 300, height: 150)
}
}

View 模型

class CoreDataViewModel: ObservableObject {
let container: NSPersistentContainer
@Published var savedEntites: [MemoryEntity] = []
@Published var selectedEntity: String = ""
init() {
container = NSPersistentContainer(name: "MemoryContainer")
container.loadPersistentStores { (description, error) in
if let error = error {
print("Error loading CoreData. \(error)")
}
}
FetchMemories()
}

func FetchMemories() {
let request = NSFetchRequest<MemoryEntity>(entityName: "MemoryEntity")
do {
savedEntites = try container.viewContext.fetch(request)
} catch let error {
print("Error fetching \(error)")
}
}

}

最佳答案

实体的范围在 ForEach 括号内,

ForEach(vm.savedEntites) { entity in

} //End scope entity var

如果你想在 ForEach 之外显示一个礼物,建议你可以在你的 viewModel 中声明一个 selectedEntity 为@Published

List {
ForEach(vm.savedEntites) { entity in
Button(action: {
vm.selectedEntity = entity
showingDetailScreen.toggle()
}) {
}
.sheet(isPresented: $showingDetailScreen) {
DetailItemView(entity: vm.selectedEntity,isVisible: self.$showingDetailScreen)
}

关于swift - 在范围 SwiftUI 中找不到 'entity',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68418544/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com