【发布时间】:2020-12-25 05:13:19
【问题描述】:
我试图寻找这个问题的答案,但过去的答案都与核心数据无关。
我正在尝试创建一个函数,用于从滚动视图、CoreData、onDelete 中删除我的数据。它在 let delete = SavedPoem[index]" 旁边向我抛出以下错误:Type "SavedPoem" has no member "subscript"。
“SavedPoem”是存储在 CoreData 中的实体,因此我不确定如何执行过去问题中的任何建议。
代码在这里:
import SwiftUI
struct SavedPoemList: View {
@Environment(\.managedObjectContext) var moc
@FetchRequest(entity: SavedPoem.entity(), sortDescriptors: []) var savedpoems : FetchedResults<SavedPoem>
var body: some View {
VStack (alignment: .leading, spacing: 0) {
HStack{
Text("Your Saved Poems")
.font(.title)
.fontWeight(.black)
.foregroundColor(.black)
Spacer()
}.padding(.bottom)
.padding(.trailing)
.padding(.leading)
ScrollView {
ForEach(savedpoems, id:\.title) {SavedPoem in
NavigationLink (destination: DetailViewSaved()){
ZStack {
Rectangle()
.fill(Color.white)
.frame(width: UIScreen.screenWidth - 40, height: 70)
.cornerRadius(5)
.padding([.horizontal], 20)
// .shadow(color: .gray, radius: 10)
HStack {
VStack (alignment: .leading){
Text("\(SavedPoem.title ?? "")")
.font(.headline)
.foregroundColor(.black)
.lineLimit(1)
Text("\(SavedPoem.author ?? "")")
.font(.subheadline)
.foregroundColor(.secondary)
}
.padding(.horizontal)
Spacer()
}
.padding()
}.padding(.bottom,10)
}
}.onDelete(perform: remove)
}
.navigationTitle("My Saved Poems")
.navigationBarHidden(true)
.edgesIgnoringSafeArea(.top)
.padding(.bottom, 30)
}
.padding(.horizontal)
.edgesIgnoringSafeArea(.bottom)
}
func remove(at offsets : IndexSet) {
for index in offsets {
let delete = SavedPoem[index]
self.moc.delete(delete)
}
try? self.moc.save()
}
}
struct SavedPoemList_Previews: PreviewProvider {
static var previews: some View {
SavedPoemList()
}
}
有什么想法吗?提前致谢。
【问题讨论】: