【问题标题】:Converting Swift 2.0 to Swift 3.0将 Swift 2.0 转换为 Swift 3.0
【发布时间】:2017-03-14 17:59:44
【问题描述】:

我目前正在使用 AWS Mobile Hub 和 AWS 服务编写一个 iOS 应用程序。在将 API Gateway 与 AWS Lambda 函数连接后,我正在将其实施到我的应用程序中。完成所有这些之后,AWS 为我生成了一个 SDK 以在我的项目中实施,但问题是代码在 Swift 2.0 中。我正在尝试将其转换为 Swift 3.0,但我不知道这段代码应该做什么/试图做什么,所以我不知道如何转换它。

我的问题是,如何将此行转换为 Swift 3.0?

var URLString: String = "https://XXXXX.execute-api.XXXX.amazonaws.com/prod"
    if URLString.hasSuffix("/") {

        URLString = URLString.substringToIndex(URLString.startIndex.advancedBy(URLString.lengthOfBytesUsingEncoding(NSUTF8StringEncoding) - 1))

    }

问题在于“if”语句中的代码行。 谢谢。

【问题讨论】:

  • 这看起来像是(非常脆弱的)尝试从字符串中删除最后一个字符,所以这可能就是您要查找的内容:stackoverflow.com/questions/39609791/…
  • 你能读懂代码吗?这不是版本的情况 - 这是代码试图做什么的情况。是的,它正在尝试删除尾随的“/”字符。我的真正问题是你为什么要问?您是否遇到其他问题?
  • 我可以阅读代码。不过,我是 Swift 的新手,不,我没有遇到其他问题。我收到一个错误“类型为“String”的值没有成员“substringToIndex””

标签: swift string amazon-web-services swift3 substring


【解决方案1】:

Swift 3 版本:

var URLString: String = "https://XXXXX.execute-api.XXXX.amazonaws.com/prod"
if URLString.hasSuffix("/") {
    let index = URLString.index(URLString.startIndex, offsetBy: (URLString.characters.count - 1))
    URLString = URLString.substring(to: index)

}

请在 Swift 中使用小写字母开头的驼峰式命名您的变量。更方便的方式:

var urlString: String = "https://XXXXX.execute-api.XXXX.amazonaws.com/prod"
if urlString.hasSuffix("/") {
     urlString = String(urlString.characters.dropLast())
}

【讨论】:

  • 那段代码不是我写的。就像我说的,它是通过 AWS 生成的。不过谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多