NSDecimal has toll-free bridging with NSDecimalNumber so you can still do as 
casting when talking to an Objective-C API.

> On Nov 11, 2016, at 2:56 PM, Chris Anderson via swift-users 
> <swift-users@swift.org> wrote:
> 
> Sure thing. Yeah, ideally the bridging would be fixed, but at the least, 
> correcting the documentation will be a good start. Will file, thanks.
> 
> Best,
> Chris Anderson
> 
>> On Nov 11, 2016, at 5:55 PM, Tony Parker <anthony.par...@apple.com 
>> <mailto:anthony.par...@apple.com>> wrote:
>> 
>> Hi Chris,
>> 
>> Can you file a radar or JIRA for us on this? It looks like something should 
>> be fixed in the documentation at least, or perhaps in the bridging.
>> 
>> - Tony
>> 
>>> On Nov 11, 2016, at 1:46 PM, Chris Anderson via swift-users 
>>> <swift-users@swift.org <mailto:swift-users@swift.org>> wrote:
>>> 
>>> I'm having problems with the type conversion between a Swift `Decimal` and 
>>> an Objective C `NSDecimalNumber`.
>>> 
>>> If I have the Swift class:
>>> 
>>>     @objc class Exam: NSObject {
>>>         var grade: Decimal = 90.0
>>>     }
>>> 
>>> And try to use that Swift class in Objective C, 
>>> 
>>>     Exam *exam = [[Exam alloc] init];
>>>     NSDecimalNumber *result = [[NSDecimalNumber zero] 
>>> decimalNumberByAdding:grade.value];
>>> 
>>> I get the error:
>>> 
>>> Sending 'NSDecimal' to parameter of incompatible type 'NSDecimalNumber * 
>>> _Nonnull'
>>> 
>>> as it seems like `grade` is being treated as an `NSDecimal` not an 
>>> `NSDecimalNumber`. This seems incorrect as per 
>>> https://developer.apple.com/reference/foundation/nsdecimalnumber 
>>> <https://developer.apple.com/reference/foundation/nsdecimalnumber> it says 
>>> 
>>> "The Swift overlay to the Foundation framework provides the Decimal 
>>> structure, which bridges to the NSDecimalNumber class. The Decimal value 
>>> type offers the same functionality as the NSDecimalNumber reference type, 
>>> and the two can be used interchangeably in Swift code that interacts with 
>>> Objective-C APIs. This behavior is similar to how Swift bridges standard 
>>> string, numeric, and collection types to their corresponding Foundation 
>>> classes."
>>> 
>>> So I'm not sure if 1) I'm doing something wrong. 2) there's an error in the 
>>> documentation or 3) this is a Swift bug. Number 1 on that list is 
>>> definitely the most likely, but I wanted to see what I’m missing here.
>>> 
>>> I don't want to explicitly make the values in my Swift class 
>>> `NSDecimalNumber` because then I cannot do simple arithmetic operations 
>>> such as `+` without doing the whole ugly `decimalNumberByAdding` dance.
>>> 
>>> Thanks for the help!
>>> 
>>> Best,
>>> Chris Anderson
>>> _______________________________________________
>>> swift-users mailing list
>>> swift-users@swift.org <mailto:swift-users@swift.org>
>>> https://lists.swift.org/mailman/listinfo/swift-users 
>>> <https://lists.swift.org/mailman/listinfo/swift-users>
>> 
> 
> _______________________________________________
> swift-users mailing list
> swift-users@swift.org
> https://lists.swift.org/mailman/listinfo/swift-users

_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to