首页 > 解决方案 > 从手动安装转移到通过 Xcode 中的 Cocoapods 使用 Realm

问题描述

我目前在我的一个项目中使用 Realm,我在其中手动安装了它。一切正常,直到我将 Xcode 从 10.1 更新到 10.2。现在我不断收到以下错误。

Swift 5.0 编译器无法导入使用 Swift 4.2 编译的模块:/Users/userName/MyApp/RealmSwift.framework/Modules/RealmSwift.swiftmodule/i386.swiftmodule

我相信这与以下事实有关:当我尝试用为 Xcode 10.2 编译Realm frameworks的最新版本替换我的项目中的Realm为Xcode 10.2

无论如何,我现在想尝试在每次更新 Xcode 时 使用Realmthrough来消除此类问题,所以我的问题是……</p>Cocoapods

  1. 为了让我从手动安装转移到通过 Cocoapods 使用 Realm,我需要在 Xcode 中进行哪些更改?

  2. 我在框架搜索路径中需要什么?

  3. 我需要删除Run Script Phase bash "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/Realm.framework/strip-frameworks.sh"吗?

  4. 我的 Pod 文件中需要什么?由于在文档中找不到任何信息,我更感兴趣的是如何合并Realm我的。WatchApp Extension

这是我的 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

仅供参考 - 我已经在我的项目中使用 Cocoapods 但还Realm没有。另外,我在这个项目中Realm使用iOS和。WatchApp Extension

标签: iosswiftxcoderealmcocoapods

解决方案


如果您已经拥有由 cocoapods 创建的工作区,则无需修改项目设置,当您将新 pod 添加到 podfile 时,cocoapods 会自动处理将其正确链接到您的项目。

只需删除手动添加的 Realm 框架文件,删除包含 的自定义 Run Script 构建阶段"${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.swiftmodule/i386.swiftmodule

,在使用预编译框架时,您需要等到框架的开发者更新了 Swift 5 的预编译版本(或者您想要将项目切换到的最新版本)之后才能使用它们。

由于 cocoapods 在您自己的机器上从源代码编译所有依赖项,因此不会出现 Swift 编译器版本不兼容的问题,您甚至可以专门从您的 podfile 控制每个项目使用哪个 Swift 版本。


推荐阅读