Swift 2.0 Method cannot be marked @objc because the type of the parameter cannot be represented in Objective-C

You have very nicely explained the problem yourself:

class Person: Hashable {

Person is not an NSObject. But only an NSObject-derived class type can be seen by Objective-C. Therefore your Person type is invisible to Objective-C. But your @objc func declaration is for a function that takes an array of Person — and we have just said that Person is invisible to Objective-C. So your @objc func declaration is illegal. Objective-C cannot be shown this function, because it cannot be shown its parameter.

You would need to change your class declaration to start like this:

class Person: NSObject {

…and then you might of course have to make any necessary further adjustments in the class’s implementation. But that change would make your @objc func declaration legal. (NSObject is Hashable, so the amount of work needed to make this adaptation might not be very great.)

Leave a Comment