【问题标题】:URL Encoding swift IOSURL编码swift IOS
【发布时间】:2023-03-06 04:39:01
【问题描述】:

我正在使用以下代码来编码我的字符串 url

let originalString = "test/test"
let escapedString = originalString.addingPercentEncoding(withAllowedCharacters: . urlQueryAllowed)
print(escapedString!)

我正在寻找 Swift 扩展来编码 url,这样我就不必每次都编写代码。如何创建扩展来编码 url

【问题讨论】:

  • 不要使用字符串 URL。使用 URL 组件。问题解决了。

标签: ios swift url encode swift-extensions


【解决方案1】:

我认为你可以这样做:

extension String {
    var encoded: String? {
        return self.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)
    }
}

然后这样称呼它:

let encodedUrl = "http://...".encoded

【讨论】:

  • 不工作得到这样的网址 https%3A%2F%2Ftximages.apk.in%2test2%2Fretailer%2F320%2Fss%20_Point-6685.jpg
【解决方案2】:

如果你想创建一个扩展,你只需要添加

extension YourViewController {
    func stringEncode(encodedString: String) {
        let escapedString = 
        encodedString.addingPercentEncoding(with(withAllowedCharacters: .urlHostAllowed)
     print (escapedString!)
   }
}

然后在您想使用的任何地方调用该函数。然后只需将字符串传递给函数的 encodedString 部分。就像您要在按下按钮时使用它来对文本字段中的某些内容进行编码:

@IBOutlet weak var textField: UITextField!

@IBAction func buttonPressed (_ sender: Any) {
    stringEncode(encodedString: textField.text)
}

然后按下按钮它应该执行您想要的功能。我自己还在学习 Swift,但我想我会尝试回答——让我知道这是否有效!

【讨论】:

  • 不工作得到这样的网址 https%3A%2F%2Ftximages.apk.in%2test2%2Fretailer%2F320%2Fss%20_Point-6685.jpg
  • 这是因为 URL 主机中不需要 : 和 /(请参阅 .urlHostAllowed)。您应该只对需要编码的部分进行编码。
  • 我没有基本 url,这些 url 是来自服务器的动态我正在使用它们来加载图像,因此必须对整个 url 进行编码
  • 我只想编码一些特殊字符,例如:ááá, ô,ôô.ôô.ôô....
猜你喜欢
  • 1970-01-01
  • 2019-01-06
  • 2011-12-26
  • 1970-01-01
  • 2018-02-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多