Xcode 11中Swift Combine.framework的可选链接

Igo*_*uta 10 ios13 swiftui xcode11 combine

我们的应用程序支持iOS 11及更高版本。在iOS 13中,我们使用SwiftUI+Combine

我们用相应的check 或包裹导入SwiftUICombine框架。如果我们在iOS 12下从Xcode 11运行我们的应用程序,则会出现错误#if canImport(SwiftUI)#if canImport(Combine)dyld: Library not loaded: /System/Library/Frameworks/Combine.framework/Combine

我们通过可选地链接来解决SwiftUI的相同问题。

在此处输入图片说明

但是我们无法为Combine设置相同的名称,因为甚至无法选择它进行链接

在此处输入图片说明

nsc*_*idt 8

您可以显式添加链接器标志,以在构建设置中可用时有选择地链接“组合”。在Xcode Build Settings中,添加-weak_framework Combine to Other Linker Flags

构建设置Ohter Linker标志“ -weak_framework组合”

或在XCConfig文件中添加以下行:

OTHER_LDFLAGS = -weak_framework Combine
Run Code Online (Sandbox Code Playgroud)

或者,如果您仍然想支持使用旧版本的Xcode进行构建:

OTHER_LDFLAGS[sdk=iphoneos13.0] = -weak_framework Combine
OTHER_LDFLAGS[sdk=iphonesimulator13.0] = -weak_framework Combine

OTHER_LDFLAGS[sdk=watchos6.0] = -weak_framework Combine
OTHER_LDFLAGS[sdk=watchsimulator6.0] = -weak_framework Combine

OTHER_LDFLAGS[sdk=appletvos13.0] = -weak_framework Combine
OTHER_LDFLAGS[sdk=appletvsimulator13.0] = -weak_framework Combine

OTHER_LDFLAGS[sdk=macosx10.15] = -weak_framework Combine
Run Code Online (Sandbox Code Playgroud)