Alamofire有这个功能
func escape(string: String) -> String {
let legalURLCharactersToBeEscaped: CFStringRef = ":/?&=;+!@#$()',*"
return CFURLCreateStringByAddingPercentEscapes(nil, string, nil, legalURLCharactersToBeEscaped, CFStringBuiltInEncodings.UTF8.rawValue)
}
此func中的编译器显示“CFString!不可转换为String”错误。我已经尝试Convert CFString to NSString - Swift投了这个,但没有运气。
答案 0 :(得分:5)
已删除从桥接的Objective-C类(NSString / NSArray / NSDictionary)到其相应的Swift值类型(String / Array / Dictionary)的隐式转换,使Swift类型系统更简单,更可预测。 ...
要执行此类桥接转换,请使用as
关键字明确转换。
您必须明确地将CFString/NSString
转换为Swift String
:
func escape(string: String) -> String {
let legalURLCharactersToBeEscaped: CFStringRef = ":/?&=;+!@#$()',*"
return CFURLCreateStringByAddingPercentEscapes(nil, string,
nil, legalURLCharactersToBeEscaped,
CFStringBuiltInEncodings.UTF8.rawValue) as String
// HERE ---^
}
另一个方向的转换(Swift String
到NSString
)仍然会自动完成,这就是您的string
参数的原因
函数可以直接传递给
预期的CFURLCreateStringByAddingPercentEscapes()
函数
一个CFString
参数。