【发布时间】:2020-01-28 17:43:30
【问题描述】:
从CoreData更新一些数据后,我还想更新一个State-变量为返回结果的数量。
当 CoreData 发生变化时,Stepper 应该始终设置为返回结果的数量。但是,当我使用Stepper 时,onAppear 也会触发。如何检查 onAppear 是否更改了 CoreData 或使用了 Stepper?这可能吗?
import SwiftUI
struct ContentView: View {
@State var numberOfResults = 0
@FetchRequest(entity: YourModel.entity(), sortDescriptors: [], predicate:NSPredicate(format: "isSelected == %@", NSNumber(booleanLiteral: true))) var objects: FetchedResults<YourModel>
var body: some View{
return VStack{
Stepper("text", value: $numberOfResults, in: 0...objects.wrappedValue.count, step:5)
.onReceive(objects.publisher, perform: {_ in
self.numberOfResults = self.objects.count
print("onReceive")
})
}
}
}
【问题讨论】: