Swift3 计算泛型表达式时出现Swift 3编译错误

Swift3 计算泛型表达式时出现Swift 3编译错误,swift3,Swift3,我正在为我的cloudkit方法开发一个通用的“结果”回调,但我不确定为什么不能解释“成功”回调 参考: 导入基础 导入CloudKit 公共枚举CloudKitError:错误{ 一般情况(字符串) } 公共枚举结果{ 成功案例(T) 案例失败(结果) } public typealias CloudKitFetchClosure=(结果:CloudKitResult)->Void 公共最终类CloudKitController{ 公共类型别名T=CKRecord public func sa

我正在为我的cloudkit方法开发一个通用的“结果”回调,但我不确定为什么不能解释“成功”回调

参考:

<代码>导入基础 导入CloudKit 公共枚举CloudKitError:错误{ 一般情况(字符串) } 公共枚举结果{ 成功案例(T) 案例失败(结果) } public typealias CloudKitFetchClosure=(结果:CloudKitResult)->Void 公共最终类CloudKitController{ 公共类型别名T=CKRecord public func save(record:CKRecord,callback:CloudKitFetchClose)->Void{ self.publicDB.save(记录,completionHandler:{updatedRecord,中出错 如果让u3;:错误=错误{ DispatchQueue.main.async(执行:{ 回调(.failure(.general(“出错”)) }) }否则{ DispatchQueue.main.async(执行:{ 回调(.success(updateRecord)) }) } }) } } “CloudKitResult”(又名“CloudKitResult”)中的成员“success”生成类型为“CloudKitResult”的结果,但上下文预期为“CloudKitResult”(又名“CloudKitResult”) 回调(.success(updateRecord))
我不得不打开CloudKit返回的记录。编译器现在很高兴

    public func save(_ record: CKRecord, callback: CloudKitFetchClosure<T>) -> Void {

    self.publicDB.save(record, completionHandler: {updatedRecord, error in

        if let _: Error = error {

            DispatchQueue.main.async(execute: {
                callback(.failure(.general("Something went wrong")))
            })

        } else {

            if let ckrecord: CKRecord = updatedRecord {

                DispatchQueue.main.async(execute: {
                    callback(.success(ckrecord))
                })
            }
        }
    })
}
public func save(u记录:CKRecord,回调:CloudKitFetchClosure)->Void{
self.publicDB.save(记录,completionHandler:{updatedRecord,中出错
如果让u3;:错误=错误{
DispatchQueue.main.async(执行:{
回调(.failure(.general(“出错”))
})
}否则{
如果让ckrecord:ckrecord=updatedRecord{
DispatchQueue.main.async(执行:{
回调(.success(ckrecord))
})
}
}
})
}

第二个链接与第一个链接相同。另外,请不要链接到您的代码,将其作为问题的一部分发布。
    public func save(_ record: CKRecord, callback: CloudKitFetchClosure<T>) -> Void {

    self.publicDB.save(record, completionHandler: {updatedRecord, error in

        if let _: Error = error {

            DispatchQueue.main.async(execute: {
                callback(.failure(.general("Something went wrong")))
            })

        } else {

            if let ckrecord: CKRecord = updatedRecord {

                DispatchQueue.main.async(execute: {
                    callback(.success(ckrecord))
                })
            }
        }
    })
}