> 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