无法推断通用参数“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<YourUserModel, YourErrorType>) in
...
idk 为什么它没有从推断中捕捉到这一点,可能是 if
没有 else
的原因
我在else中添加了一个选项,所以如果用户为nil,它会注销并进入初始页面,是不是一样? @OscarApeland
nil
没有类型,但又是 idk。也许它是一个错误。无论哪种方式指定您的返回类型都应该解决问题
@Alexander lol 很高兴我问了这个问题以上是关于无法推断通用参数“T” - Swift 5.5的主要内容,如果未能解决你的问题,请参考以下文章