Xcode报错: pod管理项目导入第三方报错

错误类型:Too many arguments to function call, expected 0, have 3 

软件环境:LLVM 7.0 

问题描述:最近在使用pod导入第三方工具 Nimbus 的时候,出现Too many arguments to function call, expected 0, have 3 ,在网上搜索了很多解决方案,给出解决方法:

解决方案:

Build Setting--> Apple LLVM 6.0 - Preprocessing--> Enable Strict Checking of objc_msgSend Calls  改为 NO




按照上面给出的方法进行了修改,结果问题依然存在。

怎么办呢?

经过研究发现,在使用pod管理项目的时候需要单独选中在pod项目中对引入的Nimbus进行单独设置,如下如所示:



Build Setting--> Apple LLVM 7.0 - Preprocessing--> Enable Strict Checking of objc_msgSend Calls  改为 NO



最终成果:

通过单独的对pod中的Nimbus进行单独设置,现在项目成功解决报错问题。


不同的报错情况有不同的解决办法: - 若报错信息为 “[!] Pods written in Swift can only be integrated as frameworks; add `use_frameworks!` to your Podfile or target to opt into using it.”,需要在Podfile或目标中添加 `use_frameworks!` [^1]。 - 当OC项目使用cocoapods导入swift库,报错为 “library not found for -lswiftSwiftOnoneSupport for architecture x86_64”,文档未提及具体解决办法。 - 若在Xcode9的Swift 4.0下编译时第三方框架报错 “Swift compiler Error”,可在podfile文件中,使用Cocoapods控制,示例代码如下: ```ruby platform :ios, '9.0' post_install do |installer| # 需要指定swift编译版本的第三方的名称 myTargets = ['Charts','Moya'] installer.pods_project.targets.each do |target| if myTargets.include? target.name target.build_configurations.each do |config| config.build_settings['SWIFT_VERSION'] = '3.2' end end end end use_frameworks! target 'xxxx' do pod 'IQKeyboardManager', '~>4.0.6' pod 'JSONModel' pod 'KVOController' pod 'MagicalRecord' pod 'Mantle' pod 'MJRefresh' pod 'Masonry' pod 'Moya' pod 'ReactiveSwift' pod 'SDWebImage' pod 'SwiftyJSON' pod 'SDCycleScrollView' pod 'Charts', '~> 3.0.1' end ``` [^4] - 若报错 “no such module”,可能是没有添加桥接文件。可在Swift工程主目录下新建一个OC类,若项目第一次创建OC类,会弹出是否建立Swift - OC的桥接文件的弹窗提示,点击Create Bridging Header按钮创建即可;也可手动创建桥接文件(Header文件,名字随意)。创建完成之后在项目target下的build setting -> Swift Compiler - General -> Objective - C Bridging Header将上面建立文件的目录设置上去,路径组成格式:项目名/Header文件夹名字/Header文件名 [^5]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值