Can a Swift Optional Int (Int?) be exposed to Objective-C via bridging?

Solution 1:

Here's a concrete answer for the solution described above:

private var _number: Int?
public var number: NSNumber? {
    get {
        return _number as NSNumber?
    }
    set(newNumber) {
        _number = newNumber?.intValue
    }
}

// In case you want to set the number in the init
public init(number: NSNumber?) {
    _number = number?.intValue
}

Solution 2:

The problem with exposing an Int? property as NSNumber* is that you could store a non-Int-compatible NSNumber to it from Objective-C.

You can make a computed NSNumber? property to wrap your Int? property. The getter would simply return the Int? variable. The setter would set the Int variable from -[NSNumber integerValue].