使用Python-AppKit-ObjectiveC转换为预合成Unicode字符串
这份来自苹果的文档 技术问答 QA1235 讲述了一种将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 行, 在 ValueError: NSInvalidArgumentException - * -[OC_PythonString _cfNormalize:]: 发送给实例 0x1f02510 的选择器未被识别
我想这可能是因为需要一个CFMutableStringRef作为参数。那么,我该如何将Python字符串转换为CFMutableStringRef呢?
1 个回答
2
OC_PythonString(也就是Python字符串在这里的对应类型)是NSString的一个子类,所以你可以通过以下方式得到一个NSMutableString:
mutableString = NSMutableString.alloc().initWithString_("abc")
然后可以把mutableString作为参数传给CFStringNormalize。