gpt4 book ai didi

ios - CFStringTransform 和 Swift 3 对 'init' 的使用不明确

转载 作者:可可西里 更新时间:2023-11-01 00:58:26 29 4
gpt4 key购买 nike

尝试构建 BonMot 的示例项目时,

let theCFMutableString = NSMutableString(string: myString) as CFMutableString
CFStringTransform(theCFMutableString, UnsafeMutablePointer<CFRange>(nil), kCFStringTransformToUnicodeName, false)

我在 CFStringTransform 行遇到这个错误

Ambiguous use of 'init' 

Xcode 8 项目使用 Swift 3

最佳答案

在 Swift 2 中,指针类型符合 NilLiteralConvertible ,允许非可选指针类型表示空指针。因此当你这样做的时候

UnsafeMutablePointer<CFRange>(nil)

编译器实际上使用了 init(_ other: COpaquePointer) UnsafeMutablePointer 的初始化程序, 作为 COpaquePointerNilLiteralConvertible因此可以表示空指针。

但是在 Swift 3 ( SE-0055 ) 中,指针类型不再符合 ExpressibleByNilLiteral .不再允许非可选指针类型表示空指针,现在只需使用可选类型即可完成此操作,其中 nil表示空指针。

因此你可以通过nil直接进入range CFStringTransform 的参数,正如它期望的那样 UnsafeMutablePointer<CFRange>! :

CFStringTransform(theCFMutableString, nil, kCFStringTransformToUnicodeName, false)

关于ios - CFStringTransform 和 Swift 3 对 'init' 的使用不明确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39548291/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com