最新的 Amazon AWS Mobile 示例代码出现奇怪的 Swift 3 问题

2024-01-04

按照 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 的其他应用程序存储的错误身份验证令牌。”我在这里问的问题与此完全无关。


在最后一个可能是正确语法的示例中,缺少右括号。

你替换了

} as (Any?, Error?) -> Void)

with

}而不是预期的})

为了更清楚,我删除了所有不强制的内容:

WSIdentityManager.defaultIdentityManager().resumeSession(completionHandler: { (result, error) in
    print("Result: \(result) \n Error:\(error)")
})
isInitialized = true

或者使用尾随闭包语法更短:

WSIdentityManager.defaultIdentityManager().resumeSession() { (result, error) in
    print("Result: \(result) \n Error:\(error)")
}
isInitialized = true

不需要类型注释(在完成块中)。他们弊大于利。

PS:不是isInitialized应该是in完成块?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

最新的 Amazon AWS Mobile 示例代码出现奇怪的 Swift 3 问题 的相关文章

  • 由于命名约定,使用 DynamoDB AWS SDK [无哈希键映射] 时出错

    在使用 AWS JAva SDK 时 为了定义 DynamoDBHashKey 我们使用 DynamoDBHashKey 注释 奇怪的是 如果我使用如下注释 DynamoDBHashKey String Abc 代替 DynamoDBHas
  • Swift 3 的 NSLog 问题

    迁移到 Swift 3 后 当我尝试执行以下操作时出现错误 self publicDB save listRecord completionHandler record error gt Void in if let saveError e
  • 如何执行条件segue

    我通过 IB 创建了一个 segue 单击按钮时 将转换到视图 A 在按钮单击操作中 我有performSegue withIdentifier sender 包裹在一个条件中 我希望仅当条件为真时才发生 segue 但是 一旦用户单击按钮
  • AWS JS SDK TypeError:STS 不是构造函数

    我有一个 ReactJS 应用程序 它使用 aws sdk 进行认知登录 我用了yarn安装所有模块 但是当我尝试访问 localhost 的网站时 出现 JS 错误 未捕获 承诺中 类型错误 STS 不是构造函数 错误指向该行aws sd
  • ResponseSerializer“无法使用 Swift 3 调用非函数类型“NSHTTPURLResponse”的值?

    我一直在使用以下代码 没有出现任何问题 直到更新到 Xcode 8 beta 6 它类似于这个例子 https github com Alamofire Alamofire generic response object serializa
  • 带有预填充 .sqlite 的核心数据 (Swift3)

    目前 我正在对现有 iOS9 应用程序进行 Swift3 iOS10 更新 该应用程序存储了欧洲各地约 10 000 个电动汽车充电点 到目前为止 我总是为应用程序提供预填充的数据库 xcappdata 包中的 sqlite sqlite
  • 如何在 NextJS 中设置 AWS-SDK 凭证

    我需要从 NextJs 应用程序将一些文件上传到 S3 由于它是服务器端 我的印象是简单地设置环境变量应该可以工作 但事实并非如此 我知道还有其他选择 例如为 EC2 分配角色 但我想使用 accessKeyID 和 SecretKey 这
  • 我可以指定默认的 AWS 配置文件吗?

    在我的开发环境中 我经常在多个 AWS 访问密钥之间切换 所以在我的 aws credentials文件 我有几个配置文件 然后 我可以通过指定以下内容将这些配置文件与 aws cli 一起使用 profile
  • boto3 资源(例如 DynamoDB.Table)的类型注释

    The boto3库提供了几种返回资源的工厂方法 例如 dynamo boto3 resource dynamodb Table os environ DYNAMODB TABLE 我想注释这些资源 以便我可以获得更好的类型检查和完成 但我
  • 如何从子 UICollectionview 内部获取 UITableView 的一部分

    我有一个UITableView with a UICollectionView在其每一行中 如下图所示 source https ashfurrow com blog putting a uicollectionview in a uita
  • iOS SWIFT - WebRTC 从前置摄像头更改为后置摄像头

    WebRTC 视频默认使用前置摄像头 效果很好 但是 我需要将其切换到后置摄像头 但我无法找到任何代码来执行此操作 我需要编辑哪一部分 是 localView 或 localVideoTrack 还是捕获器 斯威夫特3 0 对等连接只能有一
  • 非键属性查询

    看起来 dynamodb 的query方法必须包含分区键作为过滤器的一部分 如果不知道分区键如何进行查询 例如 您有一个具有属性的用户表userid设置为分区键 现在我们想通过电话号码查找用户 是否可以在没有分区键的情况下执行查询 使用sc
  • didReceiveRemoteNotification 未调用,iOS 10

    在 iOS 9 3 中 didReceiveRemoteNotification方法在以下两种情况下都会被调用 1 收到推送通知时 2 当用户通过点击通知启动应用程序时 但在 iOS 10 上 我注意到didReceiveRemoteNot
  • AlamofireObjectMapper 更新到 swift 3 时不支持 ios8?

    我尝试将我的项目更新到 Swift 3 我的项目也支持 ios8 在尝试更新 cocoapods 时 我遇到 AlamofireObjectMapper 需要更高部署目标的问题 更改为 ios9 后 pod 安装没有任何错误 但我仍然想支持
  • 词法错误:在字符串中,“\”出现在可能不存在的字符之前[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我正在使用 Amazon SDK 将文档上传到 CloudSearch 该文档被格式化为 JSON 当我尝试上传数据时 出现以下错
  • AWS S3 生成签名 URL“AccessDenied”

    我正在使用 NodeJs 将文件上传到 AWS S3 我希望客户端能够安全地下载文件 因此 我尝试生成签名 URL 该 URL 在使用一次后就会过期 我的代码如下所示 上传中 const s3bucket new AWS S3 access
  • 如何从 Firebase 获取名称以特定字符串开头的记录?

    如何查询 Firebase 以返回名称以特定字符串开头的子项 我正在尝试将 Firebase 与此一起使用自动完成文本字段项目 https github com mnbayan AutocompleteTextfieldSwift 他们使用
  • 如何生成涉及多个指标的AWS CloudWatch警报

    需要为API网关和Lambda函数生成CloudWatch警报 对于 API 网关 CloudWatch 如果给定时间段 例如 5 分钟 5XX 错误计数占总请求计数的 10 则应生成警报 同样 如果最大延迟占总请求数的 6 gt 4 秒
  • 如何让AWS Lambda停止执行?

    我有一个AWSLambda 函数执行操作Kinesis Firehose 该函数使用退避机制 此时我认为这是浪费我的计算时间 但无论如何 在我的代码中的某个时刻 我希望执行失败 我应该使用什么命令来停止执行 附注 我发现有这样的命令 con
  • 使用日期 Swift 3 对字典数组进行排序

    我有一个名为 myArray 的数组 其中添加了字典 我希望该字典按时间排序 这是字典中的键 那个时间是在 String 中 时间的日期格式为 yyyy MM dd HH mm ss 我尝试使用下面的代码解决方案 但给出了 从 字符串转换

随机推荐