Swiftui didset不再工作-试图找到解决方法
我找到了这样一个答案,又一次让我的生活倒退了:Swiftui didset不再工作-试图找到解决方法,swiftui,Swiftui,我找到了这样一个答案,又一次让我的生活倒退了: extension Binding { /// Execute block when value is changed. /// /// Example: /// /// Slider(value: $amount.didSet { print($0) }, in: 0...10) func didSet(execute: @escaping (Value) ->Void) ->
extension Binding {
/// Execute block when value is changed.
///
/// Example:
///
/// Slider(value: $amount.didSet { print($0) }, in: 0...10)
func didSet(execute: @escaping (Value) ->Void) -> Binding {
return Binding(
get: {
return self.wrappedValue
},
set: {
execute($0)
self.wrappedValue = $0
}
)
}
}
现在我用Published尝试了同样的方法,但出现了错误,不知道如何修复。
错误是:表达式类型不明确,没有更多上下文
@available(iOS 13.0, *)
extension Published {
/// Execute block when value is changed.
///
/// Example:
///
/// Slider(value: $amount.didSet { print($0) }, in: 0...10)
func didSet(execute: @escaping (Value) ->Void) -> Published<Any> {
return Published ( // error here : Type of expression is ambiguous without more contex`enter code here`
get: {
return self.wrappedValue
},
set: {
execute($0)
self.wrappedValue = $0
}
)
}
}
@可用(iOS 13.0,*)
已发布的扩展{
///值更改时执行块。
///
///例如:
///
///滑块(值:$amount.didSet{print($0)},单位:0…10)
func didSet(执行:@escaping(Value)->Void)->已发布{
return Published(//此处出错:表达式类型不明确,没有更多上下文`在此处输入代码`
获取:{
返回self.wrappedValue
},
设置:{
执行($0)
self.wrappedValue=$0
}
)
}
}
它可以工作,但实际上只适用于“只设置了”。。。即。。直接分配后
请考虑下面的例子。使用Xcode 11.4/iOS 13.4进行测试
structfooview:View{
@ObservedObject var test=Foo()
var body:一些观点{
VStack{
按钮(“测试分配”){self.Test.foo=10}/Published
没有这样的构造函数。