Я будую додаток, використовуючи SwiftUI, і я хотів би спосіб перетворити a Binding<Value?>в a 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]!)не працює з причин, які я ще не розумію, але я думаю, що щось$вирішено під час компіляції, тому ви, здається, не можете префіксувати довільні вирази$.
$userById[activeUserId] as! Binding<UserData>?