Я создаю приложение, используя SwiftUI, и хотел бы получить способ преобразования Binding<Value?>
в Binding<Value
>.
. В моем приложении у меня есть AvatarView
, который знает, как визуализироватьизображение для конкретного пользователя.
struct AvatarView: View {
@Binding var userData: UserData
...
}
Мое приложение содержит ContentView
, которому принадлежат две привязки: словарь пользователей по идентификатору и идентификатор пользователя, аватар которого мы должны показывать.
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]!)
не работает по причинам, которые я пока не понимаю, но я думаю кое-что о $
разрешается во время компиляции, поэтому вы не можете добавлять произвольные выражения к $
.