我目前正在我的一个项目中使用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时使用Realm
到Cocoapods
来消除这类问题,所以我的问题是…
我需要在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
表示iOS
和WatchApp 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。