当我使用CocoaPods时,"没有这样的模块"

Idr*_*ris 64 xcode ios cocoapods swift

所以这是我的程序.我Podfile在项目目录中创建了一个新的,然后我添加了以下内容

platform :ios, '9.0'
use_frameworks!

target 'CPod' do
pod 'AFNetworking', '~> 2.5'
pod 'ORStackView', '~> 2.0'
pod 'SwiftyJSON', '~> 2.1'
end 
Run Code Online (Sandbox Code Playgroud)

我开火了pod install,一切顺利,打开了xcworkspace.然后我去看看ViewController.swift,如果我尝试导入一个我得到的吊舱No such module 'SwiftyJSON',如果我这样做的话import SwiftyJSON.有任何想法吗?

编辑:SwiftyJSON是一个基于Swift的模块,而不是Obj-C

小智 83

尝试将Pods框架添加到构建方案并构建框架.构建完成后,构建/运行项目.

脚步:

  1. 方案菜单>管理方案>检查Pods>关闭 管理

    在此输入图像描述

  2. 选择Pods从该计划菜单.
  3. 建立Pods.
  4. 从同一菜单中选择项目,然后构建/运行它.

  • 我根本没有豆荚。我应该怎么办? (8认同)
  • 在 Xcode 11.0 中,它现在位于产品 -> 方案 -> 管理方案下 (5认同)
  • 你震撼了!这次真是万分感谢 :) (2认同)

Asi*_*LAN 23

安装podfile后,必须重新打开项目.xcworkspace文件(而不是.xcodeproj).

  1. 用CocoaPods克隆回购
  2. 打开YourWorkspace/YourApplication.xcworkspace
  3. 选择要在该项目Hit Run的嵌入式二进制文件中运行Add SwiftyJSON.framework的应用程序

快乐编码:)


Vis*_*hal 17

您也可以尝试使用以下方法重新安装pod:

pod deintegrate
Run Code Online (Sandbox Code Playgroud)

然后

pod install
Run Code Online (Sandbox Code Playgroud)

这为我解决了这个问题


Yas*_*yas 16

Command + Option + Shift + K然后运行您的应用程序,您将看到一个魔法.

或者从菜单 - >产品,按键盘上的Option键,您将看到Clean Build Folder.

看起来有趣的是,Xcode怎么能和我们一起做这些事情,但当我使用Pod使用Swift库时又发生了同样的事情,经过太多的努力后我最终得到了Clean Build Folder.


小智 10

不确定这对其他人是否仍然有用.但是,在我的情况下,它最终是一个愚蠢的错误,没有引用.podspec文件中的依赖项.

我们有一个带有多个内部库的应用程序,这些库也相互依赖 - 我们在Podfiles中考虑了...但不在podspecs中.

所以,即使我们的Podfiles有:

应用程序/ Podfile

# Development Pods
pod 'ConsumingLibrary ', :path => '../ios-consuming-lib'
pod 'DependentLibrary1', :path => '../ios-library-one'
pod 'CommonCoreLibrary', :path => '../ios-common-core-lib'
Run Code Online (Sandbox Code Playgroud)

ConsumingLibrary/Podfile

# Development Pods
pod 'DependentLibrary1', :path => '../ios-library-one'
pod 'CommonCoreLibrary', :path => '../ios-common-core-lib'
Run Code Online (Sandbox Code Playgroud)

还需要在.podspec中调用它:

ConsumingLibrary/ConsumingLibrary.podspec

  # TODO
  # Add here any resources to be exported.

  s.dependency 'DependentLibrary1', '~> 0.1.0-RC'
Run Code Online (Sandbox Code Playgroud)

DependentLibrary1/DependentLibrary1.podspec

  # TODO
  # Add here any resources to be exported.

  s.dependency 'CommonCoreLibrary', '~> 0.1.0-RC'
Run Code Online (Sandbox Code Playgroud)

我想我浪费了大约2个小时试图弄清楚为什么我可以构建ConsumingLibrary并运行测试,但是一旦我构建了应用程序,这就消耗了所有三个库 - 我不断得到:

没有这样的模块'DependentLibrary1'


Sma*_*ess 7

就我而言,这是因为我打开了xcodeproj而不是正确的xcworkspace.


小智 6

在pod安装命令后尝试使用pod更新,这将解决No such module的问题.我只是尝试过它工作正常.

谢谢,Ratneshwar


Kis*_*mar 6

那些使用多个目标的人,请不要忘记在 pod 中添加此行

def shared_pods
    pod 'SSKeychain', '~> 0.1.4'
    pod 'INAppStoreWindow', :head
    pod 'AFNetworking', '1.1.0'
    pod 'Reachability', '~> 3.1.0'
    pod 'KSADNTwitterFormatter', '~> 0.1.0'
    pod 'MASShortcut', '~> 1.1'
    pod 'MagicalRecord', '2.1'
    pod 'MASPreferences', '~> 1.0'
end

target 'Target_Name' do
    shared_pods
end

target 'Target_Name_Two' do
    shared_pods
end
Run Code Online (Sandbox Code Playgroud)

  • 哦男孩,你救了我的命。谢谢 !注意:如果您自创建目标以来没有进行任何 pod 修改,那么一切都会正常工作,直到您执行 pod 更新(这恰好发生在我身上)。 (3认同)

Eri*_*ana 5

也有这个问题。我注意到Pods/broken_framework_name即使在 pod install 或 pod update 之后产生错误的 for 框架中的文件夹也是空的。所以,对我来说,这些步骤有帮助:

  1. XCode完全关闭
  2. 消除 DerivedData
  3. 删除Podfile.lock. 在执行此操作之前,请确保您的 pod 设置为特定版本,并且不会导致不需要的代码更新
  4. pod deintegrate
  5. 删除.xcworkspace文件
  6. 可能是可选步骤:我use_frameworks!在所有目标之前写了一般行,但也包括在我有错误的目标中
  7. pod install

在所有步骤之后,我注意到丢失的框架文件终于又出现了,并且构建又可以正常工作了。


All*_*eld -6

要在 Objective-C 中使用 Swift,您应该导入 Xcode 在编译时自动生成的头文件(NameOfModule+Swift.h)。在这种情况下,您应该尝试在头文件中导入 SwifityJSON,如下所示:

#import "SwiftyJSON-Swift.h" 
Run Code Online (Sandbox Code Playgroud)

  • `use_frameworks!` 你不需要导入 `Obj-C` 头,你导入模块,OP 也使用 swift 你认为哪里需要导入到 `Obj-C` 中? (2认同)