Storing money as an integer is OK but I've never liked APIs that required financial amounts to be integers. Amounts always eventually need to be displayed to a human as a decimal.
P.S. Doubles are absolute evil for calculations:
@Test
func test() {
var a = Decimal(100.4449315513924) * 100 // It's me being dumb, not noticing that
let b = NSDecimalNumber(decimal: a).intValue
#expect(b == 10044) // Expectation failed: (b → -8402) == 1044
}Storage as an integer often adds complexity because of currency reforms. Decimals can and have been dropped in the past.