I want to cast some Latin strings to English(PinYin) with swift on Linux,so I wrote a function, but it seems to have some errors in it. It can run in xcode on mac os, but it will go wrong on Linux. I think there are something wrong in the conversion between CFString and string. I don't know what it is. Can someone help me? Thanks
import Foundation
#if os(Linux)
import CoreFoundation
import Glibc
#endif
public extension String{
func transformToLatinStripDiacritics() -> String{
let nsStr = NSMutableString(string: self)
let str = unsafeBitCast(nsStr, to: CFMutableString.self)
if CFStringTransform(str, nil, kCFStringTransformToLatin, false){
if CFStringTransform(str, nil, kCFStringTransformStripDiacritics, false){
let s = String(describing: unsafeBitCast(str, to: NSMutableString.self) as NSString)
return s
}
return self
}
return self
}
}