苹果公司的这份文件技术问答 QA1235 http://developer.apple.com/qa/qa2001/qa1235.html描述了一种将 unicode 字符串从组合版本转换为分解版本的方法。由于我对包含某些字符(例如重音符号)的文件名有疑问,因此我想尝试转换功能
void CFStringNormalize(CFMutableStringRef theString,
CFStringNormalizationForm theForm);
我将其与 Python 和 AppKit 库一起使用。如果我传递一个 Python 字符串作为参数,我会得到:
CoreFoundation.CFStringNormalize("abc",0)
2009-04-27 21:00:54.314 Python[4519:613]* -[OC_PythonString _cfNormalize:]:无法识别的选择器发送到实例 0x1f02510
回溯(最近一次调用最后一次):
文件“”,第 1 行,位于
值错误:NSInvalidArgumentException - *-[OC_PythonString _cfNormalize:]:无法识别的选择器发送到实例 0x1f02510
我想这是因为需要 CFMutableStringRef 作为参数。如何将 Python 字符串转换为 CFMutableStringRef?
OC_PythonString(Python 字符串桥接的对象)是 NSString 子类,因此您可以通过以下方式获取 NSMutableString:
mutableString = NSMutableString.alloc().initWithString_("abc")
然后使用 mutableString 作为 CFStringNormalize 的参数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)