fuzzygoat
fuzzygoat

Reputation: 26223

NSNumberFormatter stringFromNumber should it be able to take a Swift.Int?

I noticed today that even though the documentation for NSNumberFormatter stringFromNumber says that the function declaration takes an NSNumber as its argument ...

var playerScore = 3456789
let displayScore: String = numberFormatter.stringFromNumber(NSNumber.numberWithInteger(playerScore))

it also works correctly by simply supplying a Swift.Int ...

var playerScore = 3456789
let displayScore: String = numberFormatter.stringFromNumber(playerScore)

Is this the compiler just being clever? or something that should not work. Its things like this that make Swift a little hard to follow at times, especially when its purposely aimed at simplifying things for new developers.

Upvotes: 0

Views: 1733

Answers (1)

Cezar
Cezar

Reputation: 56362

Yes, this is expected behaviour. Swift automatically bridges certain native number types, such as Int and Float, to NSNumber.

According to the Using Swift with Objective-C book, all of the following types are automatically bridged to NSNumber:

  • Int
  • UInt
  • Float
  • Double
  • Bool

Upvotes: 2

Related Questions