在带有 Xcode 9 beta 2 的 Swift 3.x 中,使用addingPercentEncoding
会产生意想不到的结果。CharacterSet.urlPathAllowed
总是包含“:”,所以根据 的定义addingPercentEncoding
,它永远不应该逃避它。然而,使用这段代码:
// always true
print(CharacterSet.urlPathAllowed.contains(":"))
let myString = "info:hello world"
let escapedString = myString.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed)!
print(escapedString)
我得到这些结果:
我得到不良行为的情况
- Xcode 9 测试版 2,iOS 9.3
- Xcode 9 测试版 2,iOS 11.0
真实
信息%3Ahello%20world
我得到预期行为的情况
- Xcode 9 测试版 2,iOS 10.3.1
- Xcode 8.3.3,任何 iOS
真实
信息:你好%20world
是否有任何解决方法来获得addingPercentEncoding
正确尊重给定的工作实现allowedCharacters
?