无法推断通用参数“T” - Swift 5.5

Posted

技术标签:

【中文标题】无法推断通用参数“T” - Swift 5.5【英文标题】:Generic parameter 'T' could not be inferred - Swift 5.5 【发布时间】:2021-11-13 17:29:42 【问题描述】:

我正在尝试让用户登录,但出现以下错误:

Generic parameter 'T' could not be inferred

这是代码:

// Gets User signed-in
func getUser() async throws -> AuthUser 
    do 
        try await withUnsafeThrowingContinuation  continuation in
            if let user = Amplify.Auth.getCurrentUser() 
                continuation.resume(returning: user )
            
        
     catch(let error) 
        print(error)
    

为什么会这样?

【问题讨论】:

哪一行出现错误? @OscarApeland 在第 4 行,:try await withUnsafeThrowingContinuation continuation in 我以前在我的代码中遇到过这种类型的错误,尽管您的代码需要如 cmets 中提到的那样进行一些调整,但当您调用 getUser() 时,可能会出现错误。你可以试试这个:let user: AuthUser = await getUser() 你指定返回类型let user: AuthUser 这将有助于推断正确的类型,它通常对我有用。 【参考方案1】:

其实我的电话一开始就不好,应该这样做:

// Gets User signed-in
func getUser() async throws -> AuthUser 
    return try await withCheckedThrowingContinuation  (continuation: CheckedContinuation<AuthUser, Error>) in
        if let user = Amplify.Auth.getCurrentUser() 
            continuation.resume(returning: user)
         else 
            signOut()
        
    

欲了解更多信息,请转到here

【讨论】:

continuation in上指定返回类型,如(continuation: CheckedContinuation&lt;YourUserModel, YourErrorType&gt;) in... idk 为什么它没有从推断中捕捉到这一点,可能是 if 没有 else 的原因 我在else中添加了一个选项,所以如果用户为nil,它会注销并进入初始页面,是不是一样? @OscarApeland nil 没有类型,但又是 idk。也许它是一个错误。无论哪种方式指定您的返回类型都应该解决问题 @Alexander lol 很高兴我问了这个问题

以上是关于无法推断通用参数“T” - Swift 5.5的主要内容,如果未能解决你的问题,请参考以下文章

Swift 中的泛型 - “无法推断出泛型参数‘T’

应用程序因错误而崩溃:无法推断通用参数“T”

无法推断通用参数“D”。 [订购错误]

更新 substring(to:) 导致无法推断通用参数

RxDataSources`无法推断通用参数'Self'`

无法推断通用参数“SelectionValue”