按照 aws.amazon.com/mobile/ 的当前示例代码,有许多代码项尚未很好地更新到 Swift 3(考虑到他们的资源,这相当奇怪)。
当您访问 AWSMobileClient.swift 时,有一行如下代码:
if (!isInitialized) {
AWSIdentityManager.defaultIdentityManager().resumeSession(completionHandler:
{(result: AnyObject?, error: NSError?) -> Void in
print("Result: \(result) \n Error:\(error)")
} as! (Any?, Error?) -> Void)
isInitialized = true
}
任何运行都会崩溃。
幸运的是,我能够通过像这样改变参数来修复它
AWSIdentityManager.defaultIdentityManager().resumeSession(completionHandler:
{(result: Any?, error: Error?) -> Void in
print("Result: \(result) \n Error:\(error)")
} as! (Any?, Error?) -> Void)
问题是这样的,我收到警告
事实上,尝试将其转换为相同类型似乎毫无意义。
但是如果你只是删除演员阵容
AWSIdentityManager.defaultIdentityManager().resumeSession(completionHandler:
{(result: AnyObject?, error: NSError?) -> Void in
print("Result: \(result) \n Error:\(error)")
}
isInitialized = true
这根本不起作用,你会得到各种奇怪的语法错误
1)为什么会有演员阵容?
2)我怎样才能摆脱演员阵容,或者正确地编写它,这样就没有相同的演员阵容,因此没有警告?
3)我想解决方案就是消除力(所以,as
而不是as!
)但我真的不明白为什么你必须在那里铸造块。
Note- 在同一行代码中,亚马逊添加了一条注释“如果您在 iOS 模拟器中获得 EXC_BAD_ACCESS,请执行模拟器 -> 重置内容和设置...,这将清除具有相同捆绑 ID 的其他应用程序存储的错误身份验证令牌。”我在这里问的问题与此完全无关。