我在初始化Bool时遇到了麻烦,它一直给我错误,我似乎找不到解决方案。我在下面的代码中遇到的错误是“无法将'Binding'类型的值赋值给'Bool'类型”
有什么想法吗?
struct ProfileView: View {
@ObservedObject var viewModel: ProfileViewModel
@Binding var isFollowed: Bool
init(user: User) {
self.viewModel = ProfileViewModel(user: user)
// error below
self.isFollowed = $isFollowed
// error above
}
1条答案
按热度按时间uxhixvfz1#
我不清楚您要做什么,但是
$
表示法是当您将属性 Package 器(如@State
或@Published
*)传递给其他人 * 时使用的表示法。例如,如果要使用初始化时传递的某个值来初始化
@Binding
属性:首先,您需要在init中有一个相应的参数,并使用带下划线的“特殊”语法初始化其值:
现在我们假设有其他的类或结构体(我们称之为
Other
),它有某种状态或发布属性:因此,从
Other
类/结构体,您可以创建ProfileView
的示例,如下所示:这不仅仅是传递
isProfileFollowed
的一个 current 值,而是将ProfileView
的一个isFollowed
绑定到类/结构Other
的isProfileFollowed
,这样isProfileFollowed
中的任何变化对于绑定的属性isFollowed
也是可见的。所以这只是对不起作用的解释。