在Swift中将CocoaPods中的静态库用于Realm失败

时间:2019-05-13 14:21:27

标签: swift realm cocoapods

从Xcode 9开始,可以通过省略Podfile中的use_frameworks!标志来使用静态库。但是,当与Pod RealmSwift一起使用时,会导致以下错误:

[!] The following Swift pods cannot yet be integrated as static libraries:

The Swift pod `RealmSwift` depends upon `Realm`, which do not define modules. To opt into those targets generating module maps (which is necessary to import them from Swift when building as static libraries), you may set `use_modular_headers!` globally in your Podfile, or specify `:modular_headers => true` for particular dependencies.

遗憾的是,使用use_modular_headers!提出的解决方案不起作用。

我尝试过的其他事情包括:

  • 使用最新的Realm版本(3.15.0)
  • 使用Objective C version并添加Swift支持,这将不会在RLMSupport.swift文件中生成并提供未找到模块的错误。
  • 为Objective C版本添加桥接头。
  • 无休止的清理,重建,Xcode重新启动和“派生数据”文件夹清理。

绕开CocoaPods并以单独的方式安装此依赖关系不是最好的选择,因为这会使更新过程变得更加复杂。我希望有一种可以与CocoaPods,Realm和Swift一起使用的解决方案。

3 个答案:

答案 0 :(得分:1)

据我所知,添加use_modular_headers!到Podfile的顶部。

据我所知,向.podspec添加s.pod_target_xcconfig = {'DEFINES_MODULE'=>'YES'}是行不通的。 (Cocoapods 1.6.0-beta.2)

示例:

target 'Opportunity' do
    use_modular_headers!

end

答案 1 :(得分:0)

我做了以下工作:

pod 'RealmSwift', '~> 3.17', :modular_headers => true
pod 'Realm', '~> 3.17', :modular_headers => true

答案 2 :(得分:0)

我不明白为什么它不起作用。我遇到了同样的问题,我在 podfile 中添加了 use_modular_headers! 并且它起作用了。

target 'Pick Up Lines' do
    use_modular_headers!
    pod 'RealmSwift'
end

顺便说一句,在执行任何操作之前,请确保将项目的部署目标设置为 11.0。

enter image description here