如何解决@发布的var项目:有吗?转换为具体类型并保留绑定
给读者的提示:我个人这是一个愚蠢的错误……我本该使用@Binding
时在子视图中使用@ObservedObject
。这使我认为我需要强制转换为Binding<ConcreteModel>
。.
我有一个已发布的Any?
类型的var,我想将其转换并传递给期望View
的{{1}} ...是否支持?
我的选角有问题吗?
Binding<ConcreteModel>
我没有成功:
// This cast doesn't seem to be working...
if let concreteModel = viewModel.item as? Binding<ConcreteModel> {}
解决方法
使用泛型怎么样?例如...
#!/bin/bash
if [[ "$#" -lt 2 || "$1" == "-h" || "$1" == "--help" ]]; then
printf "Copy files to docker container directory.\n\n"
echo "Usage: $(basename $0) files... container:directory"
exit 0
fi
SOURCE="${*%${!#}}"
TARGET="${@:$#}"
tar cf - $SOURCE | docker cp - $TARGET
,
好的,这是 a 解决方案:
// SwiftUI
struct MyView: View {
@ObservedObject var viewModel = MyViewModel()
var body: some View {
// get concrete type
if var concreteModel = viewModel.item as? ConcreteModel {
// create new binding
let binding = Binding<ConcreteModel>(get: {
concreteModel
},set: {
concreteModel = $0
})
// pass through new binding
MySecondView(concreteModel: binding)
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。