swift 3 method in objective-c fails with no visible @interface for 'MySwiftClass' declares the selector 'addX:andY'

If you command-click on "ProductModuleName-Swift.h" in the Xcode source file editor then you can see how the Swift methods are mapped to Objective-C.

In your case that would be

@interface MySwiftClass : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
- (void)sayHello;
- (NSInteger)addXWithX:(NSInteger)x andY:(NSInteger)y;
@end

which is called as

MySwiftClass* getData = [[MySwiftClass alloc]init];
[getData sayHello];
NSInteger result = [getData addXWithX:5 andY:5];

A better Swift 3 method name might be

func add(x: Int, y:Int) -> Int

because x is already the argument (external) name of the first parameter. You can also add an @objc() attribute to the Swift definition to control the Objective-C name. For example, with

@objc(addX:andY:)
func add(x: Int, y: Int) -> Int {
    return x+y
}

it would be called from Objective-C as

NSInteger result = [getData addX:5 andY:5];

As ekscrypto in Swift 4 or later all functions need @objc if you use less versión than Swift 4 is enough @objc in class. Of course in Objective-C class you must add import of NAME_PROJECT-swift.h. If your project name is Sample then you must add:

#import Sample-swift.h

And then:

Swift 4 or Less

@objc class MySwiftClass: NSObject {
    
    func sayHello(){
      //function
    }

    func addX(){
      //function
    }
}

Swift 4 or Greater

@objc class MySwiftClass: NSObject {
    
    @objc func sayHello(){
      //function
    }

    @objc func addX(){
      //function
    }
}

In my case I had forgotten to add:

#import "MyProject-Swift.h"

Into the obj c file.