除了 CFStringGetSystemEncoding() 之外,如何在 Swift 中检索 CFStringEncoding?
how to retrieve CFStringEncoding in Swift other than CFStringGetSystemEncoding()?
let cStringRef : CFStringRef = CFStringCreateWithCString(nil, NSBundle.mainBundle().pathForResource("Luffy", ofType: "mp3")! , kCFStringEncodingMacRoman)
此编码无效,尽管它存在于文档中。
为了获得 MacRoman,我使用了 CFStringGetSystemEncoding()
我的问题是如何检索除此之外的 CFStringEncoding。
如果您只是想将 Luffy.mp3
的路径转换为 CFString
,请使用:
let cStringRef = NSBundle.mainBundle().pathForResource("Luffy", ofType: "mp3")! as CFString
编辑: 如果您想走得更远:
let path = NSBundle.mainBundle().pathForResource("Luffy", ofType: "mp3")!
let cString = path.cStringUsingEncoding(NSMacOSRomanStringEncoding)!
let cfString = CFStringCreateWithCString(nil, cString, CFStringBuiltInEncodings.MacRoman.rawValue)
该代码没有任何意义无论如何。
路径是一个 NSString,直接兼容 String 和 CFStringRef。任何地方都看不到 C 字符串。
我真的建议您弄清楚为什么要使用 CFString(这很不寻常)并删除该用法。或者,如果您一直在从互联网上复制一些代码,请去找一些更新的代码进行复制。如果您的 Swift 代码使用了 CFStringRef,那么您就做错了。
let cStringRef : CFStringRef = CFStringCreateWithCString(nil, NSBundle.mainBundle().pathForResource("Luffy", ofType: "mp3")! , kCFStringEncodingMacRoman)
此编码无效,尽管它存在于文档中。
为了获得 MacRoman,我使用了 CFStringGetSystemEncoding()
我的问题是如何检索除此之外的 CFStringEncoding。
如果您只是想将 Luffy.mp3
的路径转换为 CFString
,请使用:
let cStringRef = NSBundle.mainBundle().pathForResource("Luffy", ofType: "mp3")! as CFString
编辑: 如果您想走得更远:
let path = NSBundle.mainBundle().pathForResource("Luffy", ofType: "mp3")!
let cString = path.cStringUsingEncoding(NSMacOSRomanStringEncoding)!
let cfString = CFStringCreateWithCString(nil, cString, CFStringBuiltInEncodings.MacRoman.rawValue)
该代码没有任何意义无论如何。
路径是一个 NSString,直接兼容 String 和 CFStringRef。任何地方都看不到 C 字符串。
我真的建议您弄清楚为什么要使用 CFString(这很不寻常)并删除该用法。或者,如果您一直在从互联网上复制一些代码,请去找一些更新的代码进行复制。如果您的 Swift 代码使用了 CFStringRef,那么您就做错了。