【发布时间】:2019-10-10 11:22:16
【问题描述】:
我有一个@State 变量,我想向它添加一个特定的约束,就像这个简化的例子:
@State private var positiveInt = 0 {
didSet {
if positiveInt < 0 {
positiveInt = 0
}
}
}
然而这看起来不太好(虽然它似乎正在工作)但我真正想做的是子类化或扩展属性包装器@State,以便我可以在它的设置器中添加这个约束。但我不知道该怎么做。甚至可能吗?
【问题讨论】:
-
State是一个结构,所以你不能继承它,而且,据我所知,你不能应用多个属性包装器。编写你自己的可能有用,但我不知道你需要什么 API 来与 SwiftUI-s 更新循环交互。抱歉,只有坏消息。 -
@gujci "与 SwiftUI-s 更新循环交互" - 调用
body属性会不会这么简单?还是像在 UIKit 中调用drawRect:一样,这是一个很大的 NO? -
我没有文档,也没有尝试获取
self.body,但我认为这有点被禁止 -
我认为您应该稍微调整一下您的问题?因为您的
positiveInt问题的明显解决方案是使用Uint而不是Int。 -
@turingtested 稍微改进了我的答案。