In attempting to create a Launch Helper as per the Apple docs (and tutorial-ized), I seem to be hitting a hiccup caused by porting the Objective-C code into Swift... who\'s
Right, I had a similar issue trying to get the BOOL return of an objective-C method in Swift.
Obj-C:
- (BOOL)isLogging
{
return isLogging;
}
Swift:
if (self.isLogging().boolValue)
{
...
}
this was the way that I got rid of the error.
Boolean
is a "historic Mac type" and declared as
typealias Boolean = UInt8
so this compiles:
if SMLoginItemSetEnabled(launchDaemon, Boolean(1)) != 0 { ... }
With the following extension methods for the Boolean
type
(and I am not sure if this has been posted before, I cannot find it right now):
extension Boolean : BooleanLiteralConvertible {
public init(booleanLiteral value: Bool) {
self = value ? 1 : 0
}
}
extension Boolean : BooleanType {
public var boolValue : Bool {
return self != 0
}
}
you can just write
if SMLoginItemSetEnabled(launchDaemon, true) { ... }
BooleanLiteralConvertible
extension allows the automatic conversion of
the second argument true
to Boolean
.BooleanType
extension allows the automatic conversion of the Boolean
return value of the function to Bool
for the if-statement.Update: As of Swift 2 / Xcode 7 beta 5, the "historic Mac type" Boolean
is mapped to Swift as Bool
, which makes the above extension methods
obsolete.