実現したいこと
CoreDataを用いたList表示
前提
EntityでtextsをBinary Dataで設定、textを Stringで設定しています。
発生している問題・エラーメッセージ
Referencing subscript 'subscript(dynamicMember:)' requires wrapper 'Binding<FetchRequest<Item>.Configuration>'
該当のソースコード
SwiftUI
1 2struct ContentView: View { 3 @Environment(\.managedObjectContext) private var viewContext 4 5 @FetchRequest( 6 sortDescriptors: [NSSortDescriptor(keyPath: \Item.timestamp, ascending: true)], 7 animation: .default) 8 private var items: FetchedResults<Item> 9 10 var body: some View { 11 NavigationView { 12 List { 13 ForEach(items) { item in 14 NavigationLink { 15 AnotherView(textEditorText: Text(item.texts[index]) 16 } label: { 17 Text(item.text ?? "") 18 } 19 } 20 .onDelete(perform: deleteItems) 21 } 22 } 23 } 24 Text("Select an item") 25 } 26 } 27} 28 29- 30 31struct AnotherView: View { 32@State var textEditorText = "" 33var body: some View { 34TextEditor(text: $textEditorText).frame(width: .infinity, height: .infinity) 35.toolbar { ToolbarItem(placement: .bottomBar){ Button(action: {additem()}) {Image(systemName: "heart")}} } 36}} 37 38func additem () { 39withAnimation { 40 let newItem = Item(context: viewContext) 41Item.texts.append(textEditorText) 42 43 do { 44 try viewContext.save() 45 } catch { 46 let nsError = error as NSError 47 fatalError("Unresolved error \(nsError), \(nsError.userInfo)") 48 } 49 } 50 }} 51
試したこと
itemをItem、items、にもしました。
indexもとりました。
補足情報(FW/ツールのバージョンなど)
Xcode14.1
追記
新しく立てようと思いましたが、
わかりやすいようにここにしました。
ToolbarItem {
NavigationLink {
AnotherAnotherView(item: Item)
} label: {
Image(systemName: "heart")
}
}
struct AnotherAnotherView: View {
@Environment(\.managedObjectContext) private var viewContext @State var textEditorText = "" var item: Item
var body: some View {
TextEditor(text: $textEditorText).frame(width: .infinity, height: .infinity)
.toolbar { ToolbarItem(placement: .navigationBarLeading){ Button(action: {additem()}) {Image(systemName: "heart")}} }
}
func additem () {
withAnimation {
item.text = textEditorText
do { try viewContext.save() } catch { let nsError = error as NSError fatalError("Unresolved error \(nsError), \(nsError.userInfo)") } } }}
とすると、
Cannot convert value of type 'Item.Type' to expected argument type 'Item'
のエラーが出てしまいます。
ListのNavigationLinkでは
NavigationLink {
AnotherAnotherView(item: Item)
} label: {
Text(item.text ?? "")
}
で遷移するのですが、何がちがうのでしょうか
itemとItemの大文字 小文字がみづらくて、すみません
回答1件
あなたの回答
tips
プレビュー