Cannot assign value of type UnsafeMutablePointer ObjCBool in Swift

The safer way to handle this would be very similar to @TanJunHao 's answer:

var isSSNField = ObjCBool(true)
myClass.isSSNField = &isSSNField

Update for Swift 5.1

For pointer types Swift provides pointee property,

Documentation for v5.1 says it is used for accessing instance referenced by this pointer

You can easily set the pointee field

myClass.isSSNField.pointee = false

And this is same for all pointer types and conversions. If you want to check the value of an Objective C BOOL* You can easily

if myClass.isSSNField.pointee.boolValue

I've never seen anything like the situation you describe, and personally I'm tempted to say the situation doesn't exist; I have never seen a BOOL* property or ivar in Objective-C in my life (and I'm darned old, believe me). However, if you insist: I haven't tested this, but I think you could say something like this:

var ok = UnsafeMutablePointer<ObjCBool>.alloc(1)
ok[0] = false // or true
let val = ok
myClass.isSSNField = val

However, although I think that will compile, I'm rather unclear on what the implications of doing it would be. It could cause the universe to collapse to a black hole, so be careful.


BOOL* in Objective-C is a pointer of Bool.
Use UnsafeMutablePointer in Swift.

var isSSNField: ObjCBool = true
myClass.isSSNField = &isSSNField

Then fix it.

Just like the isDirectory parameter in function:

func fileExists(atPath path: String, isDirectory:UnsafeMutablePointer<ObjCBool>?) -> Bool

You can use the code:

var isDirectory:ObjCBool = true
var isFileExists = FileManager.default.fileExists(atPath: <#YourPath#>, isDirectory: &isDirectory)