Alamofire中有这个功能
func escape(string: String) -> String {
let legalURLCharactersToBeEscaped: CFStringRef = ":/?&=;+!@#$()',*"
return CFURLCreateStringByAddingPercentEscapes(nil, string, nil, legalURLCharactersToBeEscaped, CFStringBuiltInEncodings.UTF8.rawValue)
}
编译器在此函数中显示“CFString!不可转换为字符串”错误。我试过Convert CFString to NSString - Swift投这个,但没有运气。
最佳答案
The implicit conversions from bridged Objective-C classes (NSString/NSArray/NSDictionary) to their corresponding Swift value types (String/Array/Dictionary) have been removed, making the Swift type system simpler and more predictable.
...
In order to perform such a bridging conversion, make the conversion explicit with theas
keyword.
您必须显式地将 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
参数。
关于iphone - CF字符串!在 swift 1.2 中不能转换为 String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29556312/