如何解决self.myString =字符串和self._myString =状态initialValue:字符串之间的区别?
给出以下上下文:
struct MyView: View {
@State private var myString: String
}
我首先尝试用这种方式初始化它:
init(_ string: String) {
self.myString = string
}
但是我得到了这个错误:
在初始化之前使用的变量'self.myString'
然后我这样做了:
init(_ string: String) {
self._myString = State(initialValue: string)
}
它工作正常,但是由于声明式编程和状态对我来说是新事物,所以我不太了解其中的区别以及发生的情况。
解决方法
使用ValueError Traceback (most recent call last)
<ipython-input-42-0f2af26177a0> in <module>()
22 word_blank_list.append('_')
23
---> 24 word_blank_list.remove(choose_word())
25 print(word_blank_list)
26
ValueError: list.remove(x): x not in list
是一个属性包装器,它是围绕@State var name: String
类型的名为_name
的变量的一个很好的包装器。实际上,这是
State<String>
翻译为:
struct MyView: View {
@State private var myString: String
}
这应该解释您的问题(在初始化struct MyView: View {
private var _myString: State<String>
private var $myString: Binding<String> {
_myString.projectedValue
}
private var myString: String {
get { _myString.wrappedValue }
set { _myString.wrappedValue = $0 }
}
}
之前使用myString
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。