[swift-users] NSDictionary passed through Swift loses access to category methods

Zhao Xin owenzx at gmail.com
Tue May 23 19:12:15 CDT 2017

I don't think this is the good place for your question. Maybe stackoverflow
or apple developer forum is more suitable.

Did you added the header filename of the category to your bridge file?
Also, is there the method name in the header file as well? You know,
sometimes people wouldn't include the method name in the header but
implementing it directly in the .m file.


On Wed, May 24, 2017 at 4:10 AM, Russell Finn via swift-users <
swift-users at 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?
> Thanks — Russell
> _______________________________________________
> swift-users mailing list
> swift-users at swift.org
> https://lists.swift.org/mailman/listinfo/swift-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20170524/13a6898a/attachment.html>

More information about the swift-users mailing list