Jenis tidak memiliki subskrip anggota, di SwiftUI dengan CoreData [ditutup]

Dec 25 2020

Saya mencoba mencari jawaban untuk pertanyaan ini, tetapi tidak ada jawaban terakhir yang secara spesifik berhubungan dengan data inti.

Saya mencoba membuat fungsi yang menghapus data saya dari scrollview, dari CoreData, onDelete. Ini melemparkan saya kesalahan berikut di sebelah membiarkan delete = SavedPoem [index] ": Ketik" SavedPoem "tidak memiliki anggota" subskrip " .

"SavedPoem" adalah entitas yang disimpan di CoreData, jadi saya tidak yakin bagaimana melakukan rekomendasi yang disarankan dalam pertanyaan sebelumnya.

Kode di sini:

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

Struktur CoreData SavedPoem:

Ada ide? Terima kasih sebelumnya.

Jawaban

Asperi Dec 25 2020 at 12:16

Mungkin Anda bermaksud untuk menggunakan savedpoemsbukanSavedPoem

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