【问题标题】:Type has no member subscript, in SwiftUI with CoreData [closed]类型没有成员下标,在带有 CoreData 的 SwiftUI [关闭]
【发布时间】: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()
    }
}

CoreData SavedPoem 结构:

有什么想法吗?提前致谢。

【问题讨论】:

    标签: swift core-data swiftui


    【解决方案1】:

    您可能打算使用savedpoems 而不是SavedPoem

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

    【讨论】:

    • 没错,谢谢!它构建,但 .onDelete 似乎没有做任何事情。你知道它是否在模拟器上不起作用吗? .onDelete 是否适用于 ScrollViews?还是我错过了什么?
    • 这超出了主题,但是如果您期望的话,ScrollView 不会像 List 那样处理 onDelete。接下来可能会有所帮助stackoverflow.com/a/63833510/12299030stackoverflow.com/a/63364795/12299030
    猜你喜欢
    • 1970-01-01
    • 2021-06-05
    • 2016-07-08
    • 1970-01-01
    • 1970-01-01
    • 2017-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多