> On May 23, 2017, at 1:10 PM, Russell Finn via swift-users 
> <swift-users@swift.org> wrote:
> 
> I'm having an issue with an NSDictionary that is passing through Swift code 
> and back to Objective-C losing access to a method implemented by a category 
> on NSDictionary. There is clearly some subtlety about bridged dictionaries 
> that I'm missing, and I'd appreciate any clarification that the list can 
> provide.
> 
> Specifically: I have a Swift 3 application that uses some legacy Objective-C 
> classes.  One of these classes relies on a category on NSDictionary that 
> implements a method called `-boolValueForKey:`.  
> 
> In the main application, the Swift code calls a method on a remote object 
> proxy that returns an NSDictionary, which get bridged back to a Swift 
> dictionary (`[AnyHashable: Any]`).  This bridged dictionary is passed to a 
> method on the legacy Objective-C class that calls the `-boolValueForKey:` 
> method from the category.  At this point, a runtime exception occurs that 
> says the dictionary object (which at this point is a 
> `_SwiftDeferredNSDictionary`, according to the debugger) doesn’t recognize 
> the selector `-boolValueForKey:`.
> 
> I can work around the issue in my code by modifying the legacy Objective-C 
> class and inlining the implementation of `-boolValueForKey:` — but is there a 
> better general approach?

This should work. _SwiftDeferredNSDictionary is a subclass of NSDictionary and 
should inherit all of NSDictionary's categories.

What is the exact exception you get?


-- 
Greg Parker     gpar...@apple.com <mailto:gpar...@apple.com>     Runtime 
Wrangler


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

Reply via email to