Swift 5.5出现Generic parameter 'T' could not be inferred报错原因求解
报错原因
withUnsafeThrowingContinuation是泛型方法,要求所有代码分支都必须调用continuation的resume系列方法才能完成泛型类型推断。你当前只在if let user = Amplify.Auth.getCurrentUser()成立的分支调用了resume(returning:),没有处理无登录用户的分支,编译器无法确定无用户场景下的返回类型,因此无法推断泛型参数T。- 你在函数内部添加的
do/catch逻辑捕获了所有错误仅做打印,既没有向外抛出错误,也没有返回符合AuthUser类型的返回值,和函数声明的async throws -> AuthUser签名不匹配,也会干扰类型推断逻辑。
修复方案
补全所有分支的 continuation 调用,移除冗余的内部错误捕获逻辑即可,修复后代码如下:
// Gets User signed-in func getUser() async throws -> AuthUser { try await withUnsafeThrowingContinuation { continuation in if let user = Amplify.Auth.getCurrentUser() { continuation.resume(returning: user) } else { // 可根据业务需要替换为自定义错误类型 continuation.resume(throwing: NSError(domain: "Auth", code: -1, userInfo: [NSLocalizedDescriptionKey: "无有效登录用户"])) } } }
内容的提问来源于stack exchange,提问作者Arturo
相关产品推荐
相关产品推荐

