私はSwiftUIを使用してアプリを構築していBinding<Value?>て、Binding<Value>を> に変換する方法を望んでいます。
私のアプリには、AvatarView特定のユーザーのために画像をレンダリングする方法を知っているがあります。
struct AvatarView: View {
@Binding var userData: UserData
...
}
私のアプリは、ContentView2つのバインディングを所有するを保持しています。IDによるユーザーの辞書と、アバターを表示する必要があるユーザーのIDです。
struct ContentView: View {
@State var userById: Dictionary<Int, UserData>
@State var activeUserId: Int
var body: some View {
AvatarView(userData: $userById[activeUserId])
}
}
問題:上記のコードは$userById[activeUserId]タイプBinding<UserData?>でAvatarViewを受け取るため、結合されませんBinding<UserData>。
私が試したもの...
$userById[activeUserId]!を展開しようとしているため、機能しませんBinding<UserData?>。アンラップできるのはだけOptionalではなく、Binding<Optional>です。$(userById[activeUserId]!)私はまだ理解していない理由で機能しませんが、$コンパイル時に何かが解決されるので、任意の式の前にを付けることはできないようです$。
提案をありがとう!おそらくうまくいくと思いますが、危険なキャストはしないほうがいいと思います。私はそれをしようとすると、私は「<?UserDataのを>バインディングからのバインディング関係のないタイプ<UserDataを>への出演」というビルド警告を取得
—
rjkaplan
$userById[activeUserId] as! Binding<UserData>か?