swift 无法将型别'Binding '的值指派< Bool>给型别'Bool'

iaqfqrcu  于 2022-12-03  发布在  Swift
关注(0)|答案(1)|浏览(176)

我在初始化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
}
uxhixvfz

uxhixvfz1#

我不清楚您要做什么,但是$表示法是当您将属性 Package 器(如@State@Published *)传递给其他人 * 时使用的表示法。
例如,如果要使用初始化时传递的某个值来初始化@Binding属性:
首先,您需要在init中有一个相应的参数,并使用带下划线的“特殊”语法初始化其值:

init(...,
     isFollowed: Binding<Bool>) {
    
    // This is how binding is initialized
    self._isFollowed = isFollowed

现在我们假设有其他的类或结构体(我们称之为Other),它有某种状态或发布属性:

@Published var isProfileFollowed = false

因此,从Other类/结构体,您可以创建ProfileView的示例,如下所示:

ProfileView(...,
            isFollowed: $isProfileFollowed)

这不仅仅是传递isProfileFollowed的一个 current 值,而是将ProfileView的一个isFollowed绑定到类/结构OtherisProfileFollowed,这样isProfileFollowed中的任何变化对于绑定的属性isFollowed也是可见的。
所以这只是对不起作用的解释。

相关问题