我目前正在我的一个项目中使用Realm,在那里我手动安装了它。在我将Xcode从10.1更新到10.2之前,一切正常。现在我不断地发现下面的错误。
Swift 5.0编译器无法导入使用Swift 4.2编译的模块:/Users/userName/MyApp/RealmSwift.framework/Modules/RealmSwift.Swift Module/i386.swiftmodule
我认为这与以下事实有关:当我试图用为Xcode 10.2编译的最新的Realm frameworks替换项目中的Realm时,Xcode不会复制文件,它只是在选中copy files If Needed选项时引用它们。
不管怎样,我现在想尝试在每次更新Xcode时使用RealmCocoapods来消除这类问题,所以我的问题是…
我需要在Xcode中更改什么才能从手动安装转到通过Cocoapods使用Realm?
框架搜索路径中需要什么?
我需要删除Run Script Phase
bash“${build_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/Realm.framework/strip FRAMEWORKS.sh”?
我的Pod文件需要什么?因为在文档中找不到任何信息,所以我更感兴趣的是如何将Realm合并到我的WatchApp Extension中。
这是我的Pod文件现在的样子。
Pod文件

#platform :ios, '9.3'

target 'MyApp' do
  use_frameworks!

  # Pods for MyApp
  pod 'Firebase/Core'
  pod 'NVActivityIndicatorView'

  target 'MyAppTests' do
    inherit! :search_paths
  end

  target 'MyAppUITests' do
    inherit! :search_paths
  end
end

target 'MyApp Watch App' do
  use_frameworks!

end

target 'MyApp Watch App Extension' do
  use_frameworks!

end

仅供参考-我已经在我的项目中使用椰子荚,但还没有用于Realm。另外,我在这个项目中使用Realm表示iOSWatchApp Extension

最佳答案

如果您已经拥有由cocoapods创建的工作区,则不需要修改项目设置,当您向pod文件添加新的pod时,cocoapods将自动处理将其正确链接到项目的链接。
只需删除手动添加的领域框架文件,删除包含"${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/Realm.framework/strip-frameworks.sh"的自定义运行脚本构建阶段,然后运行pod update就可以了。
关于
Swift 5.0编译器无法导入使用Swift 4.2编译的模块:/Users/userName/MyApp/RealmSwift.framework/Modules/RealmSwift.Swift Module/i386.swiftmodule
,使用预编译框架时,需要等到框架开发人员更新Swift 5的预编译版本(或要将项目切换到的最新版本)后才能使用它们。
由于cocoapods在您自己的机器上从源代码编译所有依赖项,因此不会出现不兼容Swift编译器版本的问题,您甚至可以控制每个项目使用哪个Swift版本,特别是从您的podfile。

09-10 04:28
查看更多