面试题答案
一键面试- 导入必要框架:
- 首先需要导入
Combine
和SwiftUI
框架。
- 首先需要导入
import Combine
import SwiftUI
- 创建发布者和订阅者:
- 在视图模型中创建一个
@Published
属性作为发布者。 - 创建一个
AnyCancellable
类型的属性用于存储订阅。
- 在视图模型中创建一个
class ContentViewModel: ObservableObject {
@Published var textData = "初始文本"
private var cancellable: AnyCancellable?
init() {
cancellable = $textData
.sink { value in
print("接收到新数据: \(value)")
}
}
}
- 在视图中使用绑定:
- 在
SwiftUI
视图中,将Text
视图绑定到发布者发布的数据。
- 在
struct ContentView: View {
@ObservedObject var viewModel = ContentViewModel()
var body: some View {
Text(viewModel.textData)
}
}
完整代码示例:
import Combine
import SwiftUI
class ContentViewModel: ObservableObject {
@Published var textData = "初始文本"
private var cancellable: AnyCancellable?
init() {
cancellable = $textData
.sink { value in
print("接收到新数据: \(value)")
}
}
}
struct ContentView: View {
@ObservedObject var viewModel = ContentViewModel()
var body: some View {
Text(viewModel.textData)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}