V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
usVexMownCzar
V2EX  ›  Swift

Swift Combine 的类型看着真心累啊

  •  
  •   usVexMownCzar · Jul 8, 2022 · 2215 views
    This topic created in 1392 days ago, the information mentioned may be changed or developed.
    func stories() -> AnyPublisher<[Story], Error> {
        URLSession.shared
          .dataTaskPublisher(for: EndPoint.stories.url)
          .map(\.data)
          .decode(type: [Int].self, decoder: decoder)
          .mapError { error -> API.Error in
            switch error {
            case is URLError:
              return Error.addressUnreachable(EndPoint.stories.url)
            default:
              return Error.invalidResponse
            }
          }
          .filter({ !$0.isEmpty })
          .flatMap { storyIDs in
            mergedStories(ids: storyIDs)
          }
          .scan([]) { stories, story -> [Story] in
            stories + [story]
          }
          .map{ $0.sorted() }
          .eraseToAnyPublisher()
    }
    

    光标放在 eraseToAnyPublisher 后面,按 esc ,能看到最后的类型

    我的妈,就不能简化下吗

    希望能向 RXSwift 学习下吧,别嵌套这么多层了,看着眼晕😵‍💫

    2 replies    2022-07-08 15:11:58 +08:00
    ostholz
        1
    ostholz  
       Jul 8, 2022   ❤️ 1
    确实 RxSwift 更直观一些. Combine 看着眼累
    ansonsiva
        2
    ansonsiva  
       Jul 8, 2022
    能不用就不用,哈哈哈,必须要用就用别人的😂
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   828 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 20:50 · PVG 04:50 · LAX 13:50 · JFK 16:50
    ♥ Do have faith in what you're doing.