CoreDataを使用したSwiftUIでは、タイプにメンバーの添え字はありません[クローズ]
この質問に対する答えを探してみましたが、過去の答えはどれも特にコアデータに関連していません。
スクロールビュー、CoreData、onDeleteからデータを削除する関数を作成しようとしています。let delete = SavedPoem [index] "の横に次のエラーがスローされます。タイプ" SavedPoem "にはメンバー" 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構造:
何か案は?前もって感謝します。
回答
Asperi
おそらくあなたはsavedpoems
代わりに使うつもりでしたSavedPoem
for index in offsets {
let delete = savedpoems[index]
self.moc.delete(delete)
}