最新的 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 问题 的相关文章

  • 使用AWS SDK将文件上传到存储桶中的特定文件夹

    我正在使用节点开发人员工具包将图像上传到 AWS S3 const aws require aws sdk const s3Bucket process env S3 BUCKET const s3 new aws S3 signature
  • 更改 iOS 地图中的图钉方向

    环球银行金融电信协会3 0 MKMAP视图 iOS Note 融合的AppleMap 不与GoogleMap 我做了以下事情 实现地图并将自定义图像添加到用户位置注释 当地图打开时 它会在正确的位置显示用户位置 我的要求 当用户移动到不同方
  • 如何使用nodejs/aws-sdk将base64编码的pdf直接上传到s3?

    我正在尝试使用以下代码将 base64 编码的 pdf 上传到 S3 而无需将文件写入文件系统 const AWS require aws sdk exports putBase64 async object name buffer buc
  • 无法转换“String”类型的值?预期参数类型“URL”

    我正在尝试从主包中的文件加载数据 当我使用这段代码时 let path Bundle main path forResource abc ofType txt let dataTwo try Data contentsOf path err
  • Swift 3 的 NSLog 问题

    迁移到 Swift 3 后 当我尝试执行以下操作时出现错误 self publicDB save listRecord completionHandler record error gt Void in if let saveError e
  • 使用 Swift 3 和 Realm 同步 Apple Watch 和 iPhone

    我需要从 Apple Watch 和 iPhone 显示和修改我的数据结构 数据库 我目前正在使用一个简单的领域结构 其中有一个对象 A 和一个可以容纳大量 A 的对象 B 因此 在 iPhone 上 用户可以创建 B 并添加 A 当然还可
  • 按范围迭代数组

    我有一个数组 1 2 3 4 5 6 100 我希望将此数组迭代 5 次 具体来说 取数组的前 5 个数字并获取平均值 继续处理接下来的 5 个数字并获取平均值 依此类推 我尝试过多种方法 例如Dequeue和 for 循环但未能获得所需的
  • ResponseSerializer“无法使用 Swift 3 调用非函数类型“NSHTTPURLResponse”的值?

    我一直在使用以下代码 没有出现任何问题 直到更新到 Xcode 8 beta 6 它类似于这个例子 https github com Alamofire Alamofire generic response object serializa
  • 在 Firebase 和 Swift 3 中注册之前如何验证用户名是否存在?

    我整合了五个视图控制器的注册流程 而不是一个用于 Firebase 注册的中央 VC 通常情况下 在注册之前会出现数据丢失的问题 但我会以编程方式将所有输入的值通过 segue 推送到最终确认页面 并将数据发送到 Firebase 最终进行
  • 我可以在 Swift 3 项目中使用 Swift 2.3 框架吗?

    在我的项目中 我将所有私有 swift 2 3 文件迁移到 swift 3 我想使用用 swift 2 3 编写的遗留框架 直到它们有 swift 3 版本 我尝试添加 使用旧版 Swift 版本 是 清除 构建我的项目 但我仍然遇到一些麻
  • 无法将类型“X”的值转换为预期参数类型“X”

    Xcode 8 和 Swift 3 今天让我非常难过 请看一下并告诉我您是否遇到过类似的问题以及是否可以解决它 我一直在尝试不同的解决方案 其中 Cmd Shift K Cmd Shift Option K 删除派生数据 更改使用的结构 它
  • 我可以指定默认的 AWS 配置文件吗?

    在我的开发环境中 我经常在多个 AWS 访问密钥之间切换 所以在我的 aws credentials文件 我有几个配置文件 然后 我可以通过指定以下内容将这些配置文件与 aws cli 一起使用 profile
  • Swift 3 将日期截断为日/月/年开始的简单方法

    有没有像我们在 Oracle 数据库中所做的那样简单的方法来截断日期 例如 我需要从午夜开始设置值 在 Oracle 中我可以执行 TRUNC SYSDATE 但我在 Swift 中看不到类似的方法 我检查了 StackOverflow 并
  • 无法将 (Timer!) -> Void 转换为 ((CFRunLoopTimer?) -> Void)! - 将 NSTimer 扩展转换为 Swift 3

    我正在尝试将我在项目中使用的 Pod 转换为 Swift 3 它不是我编写的 但原作者尚未更新它 所以我将它分叉为我自己尝试的任何内容 但 我在尝试将扩展名转换为NSTimer到斯威夫特 3 Cannot convert value of
  • 在 Swift 3 中单击和双击 UITableViewCell

    我在 TableView Cell 上有故事板 segue 我用它来在单元格单击中传输到另一个 VCdidSelectRowAt方法 现在我双击了TapGestureRecognizer处理手机上的点击问题 问题是 单击时 segue 正在
  • 非键属性查询

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

    我刚接触 swift 三天 我正在尝试弄清楚如何绘制矩形 我对这门语言太陌生 不知道要扩展的类和要重写的方法 并且我四处寻找示例代码 但似乎没有任何效果 我将其归因于我对 swift 3 的使用 我现在正在尝试的是 import UIKit
  • AlamofireObjectMapper 更新到 swift 3 时不支持 ios8?

    我尝试将我的项目更新到 Swift 3 我的项目也支持 ios8 在尝试更新 cocoapods 时 我遇到 AlamofireObjectMapper 需要更高部署目标的问题 更改为 ios9 后 pod 安装没有任何错误 但我仍然想支持
  • 在 iOS Swift 中将 NSDate 转换为字符串 [重复]

    这个问题在这里已经有答案了 我正在尝试转换NSDate to a String然后更改格式 但当我经过NSDate to String它正在产生空白 let formatter DateFormatter let myString Stri
  • 为什么找不到 iCloud 帐户/CKContainer

    请参阅下面我更新的问题 我正在使用 CloudKit 开发我的第一个应用程序 我正在尝试在查找交易之前测试用户是否连接到 iCloud 这是我的代码 显示各种测试 func isICloudContainerAvailable gt Boo

随机推荐