在Objective-C中创建CFStringInlineBuffer很简单,但Swift的语法很奇怪。我无法弄清楚如何初始化这个糟糕的东西!
以下是尝试的内容:
let str : CFStringRef = "foo" as CFStringRef
let strRange = CFRangeMake(0, CFStringGetLength(str))
var inlineBuffer : CFStringInlineBuffer
CFStringInitInlineBuffer(str, &inlineBuffer, strRange)
代码产生编译错误"变量' inlineBuffer'在它被初始化之前采取"。我尝试使用可选的修复错误:
let str : CFStringRef = "foo" as CFStringRef
let strRange = CFRangeMake(0, CFStringGetLength(str))
var inlineBuffer : CFStringInlineBuffer?
CFStringInitInlineBuffer(str, &inlineBuffer!, strRange)
但是,此代码构建时,在运行时,程序崩溃时出现"致命错误:在解包可选值时意外发现nil;#34;
CFStringInlineBuffer的文档为:
此结构用于CFString对象包含的字符的内联缓冲区访问。使用CFStringInitInlineBuffer函数初始化此结构的字段;不要手动完成。