@FetchRequest
を返すメイン画面がありますFetchResult<Item>
。Item
そのメイン画面には、選択するとビューに を渡すナビゲーション リンクを含むすべての項目のリストがありItemDetail
ます。このItemDetail
ビューでは、アイテムは でマークされてい@ObservedObject
ます。のサブビューにItemDetail
はItemPropertiesView
、アイテムのすべてのプロパティが一覧表示されます。@Binding
アイテムのプロパティをItemPropertiesView
usingのプロパティに直接渡します$item.{insert property here}
。ItemPropertiesView には、LineItem
もう一度 $ を使用してプロパティを@Binding
"value" というプロパティに渡し、テキスト フィールドに渡して最終的に変更できるところがいくつかあります。
私の目標は、このテキスト フィールドを編集し、編集が完了したら、これらの変更をコア データ ストアに保存できるようにすることです。
これは少し読みにくかったので、ここでコードを再現します。
struct MainScreen: View {
@FetchRequest(entity: Item.entity(), sortDescriptors: [NSSortDescriptor(key: "itemName", ascending: true)]) var items: FetchedResults<Item>
var body: some View {
NavigationView {
List {
ForEach(items, id: \.self) { (item: Item) in
NavigationLink(destination: ItemDetail(item: item)) {
Text(item.itemName ?? "Unknown Item Name")
}
} // ForEach
}
}
} // body
} // MainScreen
struct ItemDetail: View {
@ObservedObject var item: Item
var body: some View {
ItemPropertiesView(itemCost: $item.itemCost)
}
}
struct ItemPropertiesView: View {
@Binding var itemCost: String?
var body: some View {
LineItem(identifier: "Item Cost", value: $itemCost)
}
}
struct LineItem: View {
let identifier: String
@Binding var value: String
var body: some View {
HStack {
Text(identifier).bold() + Text(": ")
TextField("Enter value",text: $value)
}
}
}
ItemDetail でエラーが発生します:「コンパイラは、妥当な時間内にこの式を型チェックできません。式を別個のサブ式に分割してみてください」
これは私が得ている唯一のエラーです。私は SwiftUI を初めて使用するので、すべてのフィードバックを歓迎します。