と の 3 つのプロパティを持つクラスがありtopic
、クラスのプロパティの 1 つでビューモデルを初期化する必要があります。しかし、他のプロパティを初期化する必要はありません。必要な API 呼び出しを行うため、ビュー モデルを初期化する必要があります。navBarHidden
viewModel
topic
これがコードのスニペットです。
struct TopicCell: View {
@Binding var navBarHidden : Bool?
@State var topic: Topic?
@ObservedObject var viewModel : TopicCellViewModel
init() {
self.viewModel = TopicCellViewModel(topic: self.topic!)
}
}
最初はtopic
とnavBarHidden
はオプションではありませんでしたが、初期化する必要がありましたが、これはやりたくありません。それらを初期化するすべてのデータを渡す必要があります。したがって、それらをオプションにしました。これにより、それらを初期化する必要がなくなり、オプションを強制的にアンラップするだけです。
しかし、これは私に1つの問題を与えます。
NavigationLink(
destination: DebateChatView(navBarHidden: $navBarHidden, topic: $topic, subtopic:
.constant(SubTopic(dictionary: ["id": "", "topic": "Random Subtopic", "title": topic!.title,
"bool": false , "messages": MOCK_MESSAGEZ])))
topic
ofとの 2 つのバインド変数に注意してくださいnavBarHidden
。DebateChatView はバインドされたオプションではなく、バインドされた通常のデータを想定しているため、これらは現在機能しません。しかし、うまくいき$topic!
ません。それで、誰かがこの問題を解決する最善の方法を教えてもらえますか?