MST
星途 面试题库

面试题:Swift中SwiftUI与Combine框架如何实现基础数据绑定

在SwiftUI视图中,假设有一个文本视图Text,需要绑定一个来自Combine框架发布者Publisher发布的数据,请描述实现该基础数据绑定的步骤,并给出关键代码示例。
49.2万 热度难度
编程语言Swift

知识考点

AI 面试

面试题答案

一键面试
  1. 导入必要框架
    • 首先需要导入CombineSwiftUI框架。
import Combine
import SwiftUI
  1. 创建发布者和订阅者
    • 在视图模型中创建一个@Published属性作为发布者。
    • 创建一个AnyCancellable类型的属性用于存储订阅。
class ContentViewModel: ObservableObject {
    @Published var textData = "初始文本"
    private var cancellable: AnyCancellable?
    init() {
        cancellable = $textData
          .sink { value in
                print("接收到新数据: \(value)")
            }
    }
}
  1. 在视图中使用绑定
    • 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()
    }
}