大佬教程收集整理的这篇文章主要介绍了objective-c – 类型’Boolean’不符合协议’BooleanType’,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
import serviceManagement let launchdaemon: CFStringRef = "com.example.ApplicationLauncher" if SMLoginItemSetEnabled(launchdaemon,truE) // Error appears here { // ... }
错误似乎一直是:
如果我只是处理一个redundant,archaic primitive(由Obj-C或Core Foundation引入的),我已经尝试在多个地方投给Bool,无济于事.
为了防止这种情况,我已经尝试过响应:
SMLoginItemSetEnabled(启动Daemon,truE)为Bool
产生错误:
‘Boolean’不能转换为’Bool’
……当真?
typealias Boolean = UInt8
所以这样编译:
if SMLoginItemSetEnabled(launchdaemon,Boolean(1)) != 0 { ... }
使用布尔类型的以下扩展方法
(我不知道这是否已经发布,我现在找不到):
extension Boolean : BooleanLiteralConvertible { public init(BooleanLiteral value: Bool) { self = value ? 1 : 0 } } extension Boolean : BooleanType { public var boolValue : Bool { return self != 0 } }
你可以写
if SMLoginItemSetEnabled(launchdaemon,truE) { ... }
> BooleanLiteralConvertible扩展允许自动转换
第二个参数为布尔值.
> BooleanType扩展允许自动转换布尔值
函数的返回值为Bool for if语句.
更新:从Swift 2 / Xcode 7 beta 5起,“历史Mac类型”布尔被映射到Swift作为Bool,这使得上面的扩展方法过时.
以上是大佬教程为你收集整理的objective-c – 类型’Boolean’不符合协议’BooleanType’全部内容,希望文章能够帮你解决objective-c – 类型’Boolean’不符合协议’BooleanType’所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。