私はSwiftUIを使用してアプリを構築していBinding<Value?>
て、Binding<Value
>を> に変換する方法を望んでいます。
私のアプリには、AvatarView
特定のユーザーのために画像をレンダリングする方法を知っているがあります。
struct AvatarView: View {
@Binding var userData: UserData
...
}
私のアプリは、ContentView
2つのバインディングを所有するを保持しています。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>
か?