X is not a member type of Y
In case anyone is here while trying to build and use an xcframework, apparently, the issue is caused when you have a class in the framework which has the same name as the module/framework.
This is a known issue and needs a workaround as mentioned here.
P.S. - I know this doesn't answer this question per se. Just leaving it here for anyone else who might land here because of the question title.
If using xcframework follow below steps to get rid of error :
- In terminal, go to the folder where .xcframework is located.
- Run the following terminal command after replacing the frameworkName with your framework name:
find . -name "*.swiftinterface" -exec sed -i -e 's/frameworkName\.//g' {} \;
- Replace the old xcframework in your project with xcframework generated with above command. Clean build the project.
The above error only occurs in xcframework when a class named is same as the module name. Details on Apple forum at: https://forums.developer.apple.com/thread/123253
There is also this bug in swift compiler: SR-631 Extensions in different files do not recognize each other
The result (success/failure) of the compilation depends on the order of files in Build Phase > Compile Sources setting.
I had exactly the same error message: X is not a member type of Y. Solved it by rearranging compilation sources.
You likely have a class/struct/enum DataManager
anywhere in your code which hides the DataManager
module. The error states that it cannot find LocationManager
in type DataManager
where it should read module instead.
Your app modules should be designed in a way so that you never need to explicitly use the module's name except for the import
statement. So just use LocationMessage.Type
directly without stating the module.
This is one reason all our app's modules are prefixed with an X
, e.g. XDataManager
. This avoids conflicts with Apple's modules, external modules (like from CocoaPods) and with types (like in your case).
The X
also makes it obvious that these modules are part of the app itself and not some third-party frameworks.