使用下面的完成处理程序代码,为什么会给我关于completionClosure类型的错误?

enum ModelSerializerError: Error {
    case readjson(String)
    case writejson(String)
    case writeFirebase(String)
    case readFirebase(String)
}

enum ModelSerializerResult<T> {
    case success(T)
    case failure(ModelSerializerError)
}

static func serializeToFirebase<T>(value: T.Type, path: String, completion: @escaping (ModelSerializerResult<Void>) -> Void) where T: Encodable { ... }

// Later in some function...

let handleError : (Error) -> () =
    { error in
        print("Error: \(error)")
    }

let completionClosure : (ModelSerializerResult) -> () =
    { result in // Cannot convert value of type '(_) -> ()' to specified type '(ModelSerializerResult) -> ()'
        switch result {
        case .success(let val): ()
        case .failure(let error): handleError(error)
        }
    }

serializeToFirebase(value: MyClass.self, path: path, completion: completionClosure)

#1楼 票数:0

如果您不熟悉闭包语法,这可能会有些棘手。 在此示例中,我缺少泛型。 更改行:

let completionClosure : (ModelSerializerResult) -> () =

let completionClosure : (ModelSerializerResult<Void>) -> () =

  ask by GoldenJoe translate from so

未解决问题?本站智能推荐:

1回复

使用通用闭包进行类型匹配的奇怪行为

在Xcode 7.3 Playground中,此Swift代码出现以下错误。 码 错误 这看起来应该可行,因为类型在我的定义中匹配。 是什么导致这种现象?
1回复

Swift通用闭包

我正在为静态表视图构建一个库,它工作正常,但我遇到了通用闭包的问题。 到目前为止看起来像这样: 我想将“cell”变量转换为适当的类型,在本例中为ProfileSelectionCell。 以下是单元类的来源: 我的问题是,如果我使配置方法通用,不可能将配置闭包存储到
1回复

快速数组的通用闭包?

可能吗? 错误Only syntatic function types can be generic提示不是。 有效码 现在,我想创建一个与myArray类型相同的属性。 我觉得我应该能够以某种方式做到这一点。 不起作用 var myArray:<T:Equat
1回复

Swift闭包通用参数

我有一个定义为 尝试称其为 这将导致以下错误:
1回复

Swift 通用闭包总和

你能告诉我,为什么一个代码可以正常工作而另一个不能? 这段代码工作正常: s3 是闭包,我可以将 UILabel 传递给它。 而 func + 可以接受两个闭包,包含不同的类型——UIView 和 UILabel。 但是下面的代码报错: 此代码给出以下编译错误: 我有点理解,为什么
1回复

Swift:带有闭包和类型别名的函数语法

我不了解此代码片段末尾的函数循环的语法(来自我正在学习的课程)。 成员是否充当 arrayClosure 使用的字符串数组的占位符? 如果是这种情况,我可以看到 name 将如何成为该数组中每个值的占位符。 如果没有,我不知道如何在最后阅读 activeMembers 的执行。 感谢您的洞察力,
3回复

在闭包中使用通用参数

我有一个函数可以调用服务来获取数据,使用 JSONDecoder 将 JSON 响应解码为模型对象,然后将该对象作为提供给该函数的完成块中的参数的一部分返回。 在对象中,我实际上使用的是 Result 对象。 这是代码 - 我试图使这个函数通用,它可以接受它需要调用的 url 作为一个参数和模型
1回复

处理闭包-使代码更通用

有两个功能,如下所示。 两者的大多数功能都相同。 它的想法是从getResponse()[Helper Callback]获取Web服务的输出,解析并通过getResult()将信息传递给包装器回调。 我正在尝试为常见功能添加单独的功能,例如, 但是有一个编译错误,我无法完成