我可以将 AnyPublisher 转换为 Published.Publisher 吗?
Can I transform AnyPublisher to Published.Publisher?
所以我有一个 AnyPublisher<Foo, Error>
类型的值,我需要将其转换为 Published<Foo>.Publisher
以便我可以将其用作 @Published
所以我的想法是我有一个 MVVM 架构
struct SwiftUIView: View {
@ObservedObject var viewModel: MyViewModel
var body: some View {
Text(/*Foo has a title, how do I access it? */)
}
}
class MyViewModel: ObservableObject {
var cellModels: AnyPublisher<Foo, Error>
// so the idea is to have and then access it in swiftUI view via viewModel.cellModels2.title
@Published cellModels2 = convert_somehow_to_publisher(cellModels)
}
显然我不能使用 viewModel.cellModels
这可能吗?
看起来您需要的是在您的视图模型上有一个 Foo
属性,并使用您拥有的 AnyPublisher<Foo, Error>
发布者更新它。
class MyViewModel: ObservableObject {
var cellModels: AnyPublisher<Foo, Error> = ...
private var cancellable: AnyCancellable?
@Published var foo: Foo?
init() {
cancellable = cellModels.assign(to: \.foo, on: self)
}
}
然后就可以在视图中正常访问.foo
了:
struct SwiftUIView: View {
@ObservedObject var viewModel: MyViewModel
var body: some View {
Text(viewModel.foo?.title ?? "")
}
}
所以我有一个 AnyPublisher<Foo, Error>
类型的值,我需要将其转换为 Published<Foo>.Publisher
以便我可以将其用作 @Published
所以我的想法是我有一个 MVVM 架构
struct SwiftUIView: View {
@ObservedObject var viewModel: MyViewModel
var body: some View {
Text(/*Foo has a title, how do I access it? */)
}
}
class MyViewModel: ObservableObject {
var cellModels: AnyPublisher<Foo, Error>
// so the idea is to have and then access it in swiftUI view via viewModel.cellModels2.title
@Published cellModels2 = convert_somehow_to_publisher(cellModels)
}
显然我不能使用 viewModel.cellModels
这可能吗?
看起来您需要的是在您的视图模型上有一个 Foo
属性,并使用您拥有的 AnyPublisher<Foo, Error>
发布者更新它。
class MyViewModel: ObservableObject {
var cellModels: AnyPublisher<Foo, Error> = ...
private var cancellable: AnyCancellable?
@Published var foo: Foo?
init() {
cancellable = cellModels.assign(to: \.foo, on: self)
}
}
然后就可以在视图中正常访问.foo
了:
struct SwiftUIView: View {
@ObservedObject var viewModel: MyViewModel
var body: some View {
Text(viewModel.foo?.title ?? "")
}
}