
import ServiceManagementlet 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’
……当真?
解决方法 布尔值是“历史Mac类型”,并声明为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’所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)