Hi there,
I recently inherited a project which is set up as follows -
Framework A - written in Objective-C, includes a third party framework written in Swift
My app, written in Objective C, includes Framework A via a CocoaPod.
When I attempt to run the app I get the following error -
dyld: Symbol not found: __TMaCs29_NativeDictionaryStorageOwner
Referenced from: /private/var/containers/Bundle/Application/0020678D-C59B-4299-938D-070508CC6F19/Auth (DEV).app/Frameworks/ZoomAuthentication.framework/ZoomAuthentication
Expected in: /private/var/containers/Bundle/Application/0020678D-C59B-4299-938D-070508CC6F19/Auth (DEV).app/Frameworks/libswiftCore.dylib
in /private/var/containers/Bundle/Application/0020678D-C59B-4299-938D-070508CC6F19/Auth (DEV).app/Frameworks/ZoomAuthentication.framework/ZoomAuthentication
Initially, I thought this was a Swift Version issue, however, the third party framework has recently been updated for the latest version of Swift (3.1). I'm using Xcode 8.3 which supports Swift 3.1 also.
The Build Settings in my app specify SWIFT_VERSION as 3.1.
When I build the app, and look in the Package Contents, I see that there are two copies of the third party framework copied - one in the app's Frameworks directory (which also includes all the Swift Runtime, libswiftCore.dylib etc..), and one in Framework A's directory.
I think the third party framework is looking for the Swift Runtime and cant find it, because it's looking in Framework A's directory, which doesnt have the Swift runtime in there - it is up one level. I *think* that is what is happening.
- App
- Frameworks
- Framework A
- Third Party framework
- Third Party framework
- Swift runtime
So I'm wondering if this sounds feasible? and if so, can Framework A be configured somehow to allow the third party framework to find Swift in its parents directory?
Thanks for any assistance.
Best regards,
David