尝试构建BonMot的示例项目时,
let theCFMutableString = NSMutableString(string: myString) as CFMutableString
CFStringTransform(theCFMutableString, UnsafeMutablePointer<CFRange>(nil), kCFStringTransformToUnicodeName, false)
我在CFStringTransform
行
Ambiguous use of 'init'
Xcode 8项目使用Swift 3
答案 0 :(得分:3)
在Swift 2中,指针类型符合NilLiteralConvertible
,允许非可选指针类型表示空指针。因此当你做到了
UnsafeMutablePointer<CFRange>(nil)
编译器实际上使用init(_ other: COpaquePointer)
的{{1}}初始化,因为UnsafeMutablePointer
是COpaquePointer
,因此可以表示空指针。
但是在Swift 3(SE-0055)中,指针类型不再符合NilLiteralConvertible
。而不是允许非可选指针类型表示空指针,现在只需使用选项来完成,其中ExpressibleByNilLiteral
表示空指针。
因此,您只需将nil
直接传递到nil
的{{1}}参数,因为它需要range
:
CFStringTransform