Loại không có chỉ số dưới thành viên, trong SwiftUI với CoreData [đóng]

Dec 25 2020

Tôi đã cố gắng tìm kiếm câu trả lời cho câu hỏi này, nhưng không câu trả lời nào trong số các câu trả lời trong quá khứ liên quan cụ thể đến dữ liệu cốt lõi.

Tôi đang cố gắng tạo một hàm xóa dữ liệu của tôi khỏi chế độ xem cuộn, khỏi CoreData, onDelete. Nó đang ném cho tôi lỗi tiếp theo để xóa = SavedPoem [index] ": Loại" SavedPoem "không có thành viên" chỉ số dưới " .

"SavedPoem" là một thực thể được lưu trữ trong CoreData, do đó, tôi không chắc về cách thực hiện bất kỳ đề xuất nào được đề xuất trong các câu hỏi trước đây.

Mã ở đây:

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

Cấu trúc CoreData SavedPoem:

Có ý kiến ​​gì không? Cảm ơn trước.

Trả lời

Asperi Dec 25 2020 at 12:16

Có lẽ bạn muốn sử dụng savedpoemsthay vìSavedPoem

for index in offsets {
    let delete = savedpoems[index]
    self.moc.delete(delete)
}