美文网首页
Combine进化之路5——通用类型

Combine进化之路5——通用类型

作者: valiant_xin | 来源:发表于2023-09-11 14:11 被阅读0次

AnyPublisher、AnySubcriber、AnySubject
之前有提到过Publisher、Subscriber、Subject是类型安全的,那么在使用中不同类型的Publisher、Subscriber、Subject可能会造成一些问题。
举例:当本地数据获取和网络数据获取采用不同类型的Publisher时,类型无法具体定义。
AnyPublisher、AnySubcriber、AnySubject就是为这一问题设计的,它们是通用类型,可以通过Publisher.eraseToAnyPublisher()、eraseToAnySubscriber()、eraseToAnySubject()转化为对应的通用类型。

// 测试擦除类型
    func eraseFunc() {
//        let publisher = Just("Hello")
//            .delay(for: 2, scheduler: DispatchQueue.main)
//            .eraseToAnyPublisher()
        let publisher = ["1","2","4","8","99","7"].publisher.eraseToAnyPublisher()
        
        let subscriber = Subscribers.Sink<String, Never> { completion in
            print("completion: \(completion)")
        } receiveValue: { input in
            print("receive: \(input)")
            print(input)
        }

        publisher.receive(subscriber: subscriber)
    }

Combine进化之路合集

相关文章

网友评论

      本文标题:Combine进化之路5——通用类型

      本文链接:https://www.haomeiwen.com/subject/mwhrvdtx.html