【问题标题】:Type of expression is ambiguous without more context xCode 14.1表达式类型在没有更多上下文的情况下不明确 xCode 14.1
【发布时间】:2022-11-23 20:19:06
【问题描述】:

有人可以告诉我,我的代码有什么问题,或者我如何分解此方法进行调试,我有最新的 xCode v.14.1 (14B47b),它以某种方式在 v.13.4.1 上编译 -_-

extension WebSocket {
    @available(macOS 10.15, *) func connectUntilBody(write: String? = nil ) async throws -> Data? {
        try await withCheckedThrowingContinuation { continuation in // <-- Type of expression is ambiguous without more context
            var result: Result<Data?, Error> = .success(nil)
            onEvent = { [weak self] event in
                if let body = event.body {
                    result = .success(body)
                    let group = DispatchGroup()
                    if let write = write {
                        group.enter()
                        self?.write(string: write) {
                            group.leave()
                        }
                    }
                    group.notify(queue: .main) {
                        self?.disconnect()
                    }
                } else if case let .error(error) = event {
                    error.flatMap { result = .failure($0) }
                    self?.disconnect()
                } else if case .cancelled = event {
                    continuation.resume(with: result)
                }
            }
            connect()
        }
    }
}

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    有一些主要问题:

    1. 如果将函数标记为throws,则必须将错误标记为resume
    2. 必须resume中的数据快乐之路.
    3. DispatchGroup 没有意义。因为 continuationasync 无论如何你可以在 write 闭包中使用 resume
    4. 您还必须确保调用resume只有一次.

      回答问题:

      如果编译器无法推断出 continuation 的类型,您必须对其进行注释。在你的情况下

      (continuation: Result<Data?,Error>)in
      

      但是你也可以调用continuation.resume(returning:)返回数据,continuation.resume(throwing:)返回错误。见问题 1)。

      您还应该返回非可选的Data,否则会出错。顺便说一下,这是 Result 类型的目标。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-05
    • 2019-11-03
    • 1970-01-01
    • 2021-05-17
    • 2019-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多