In preparation for an upcoming iOS app project I’m trying out some new project layout strategies. One of which is putting my network layer and custom UI elements in frameworks separate from my main app. I’ve done this with frameworks in my project, and then used CocoaPods to install the dependencies for these frameworks (just the Networking framework at the moment). However, I’m getting the following build error when the app tries to link:
Undefined symbols for architecture x86_64:
"generic type metadata pattern for Alamofire.Response", referenced from:
type metadata accessor for Alamofire.Response<Networking.HTTPBinResponse, Networking.APIError> in ViewController.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
This occurs despite the Response type being visible to autocomplete in Xcode and there being no compilation errors at build time. Is there anything I can do to fix this or is this some sort of Xcode / Swift linker bug or limitation? It seems like my options are to link Alamofire directly against by app target or wrap the Response type in something of my own in my Networking framework. I’d prefer not to have to import Alamofire directly, as part of hiding all of the network stuff in a single framework was to limit those sorts of dependencies.