Swift:不能使用Pod文件中的库

时间:2014-10-16 19:12:44

标签: ios swift cocoapods typhoon

我正在使用Typhoon库进行依赖注入框架。我使用CocoaPod来安装此库。这是我的pod文件:

target "typhoon-swift-demo" do
    pod 'Typhoon'
end

target "typhoon-swift-demoTests" do

end

我已成功安装,但是当我打开工作区项目文件时。我将这些代码行键入为Typhoon示例代码:

public class ApplicationAssembly: TyphoonAssembly {

}

我遇到了我的应用程序无法识别的错误TyphoonAssembly我试图使用某些行,例如:

import Typhoon // not recogize typhoon
import TyphoonAssembly // not regconize

请告诉我如何解决这个问题。在使用库之前我应该​​添加什么。谢谢:))

4 个答案:

答案 0 :(得分:13)

您必须使用Objective-C而不是Swift导入Pod头文件。因此,如果您想将CocoaPods与Swift一起使用,那么您将混合使用这两种语言。 Here's a great tutorial关于如何实现这一目标。

答案 1 :(得分:3)

除Quark的答案外,The Typhoon Swift example还展示了如何设置Typhoon以供Swift和CocoaPods使用。

请注意,如果您正在使用“应用程序样式”测试,这几乎是现在的默认测试,那么测试目标已经隐式具有主目标的依赖关系。因此,应将测试目标声明为独占。示例:

platform :ios, '7.0'

target :PocketForecast, :exclusive => true do

  pod 'Typhoon', :head

  pod 'CKUITools'
  pod 'ICLoader'
  pod 'NGAParallaxMotion'
  pod 'NSURL+QueryDictionary'
  pod 'OCLogTemplate'
  pod 'PaperFold', :git => 'https://github.com/jasperblues/PaperFold-for-iOS.git', :tag => '1.2-no-gesture-recognizers'

end

target :PocketForecastTests do
  pod 'Expecta', '~> 0.2.1'
  pod 'OCHamcrest'
  pod 'OCMockito'
end

inhibit_all_warnings!

如果测试目标未被声明为独占,则它将所有应用程序的库链接两次。这可能会引起Typhoon案件的问题,因为它使用了很多内省。


在示例应用程序中还要注意,有一个桥接头,包括:

#import "Typhoon.h"


Typhoon Swift示例:

enter image description here

答案 2 :(得分:2)

我认为这需要更新。我最近开始开发Swift应用程序,并且来自Java背景,搜索了像Spring这样的框架。 我找到的最好的是台风。然而,我没有找到新手的好介绍,所以我做了一个临时项目试试。

我将Typhoon整合为:

  1. 正在安装cocoapods
  2. 使用“use_frameworks!”创建基本podfile like here
  3. pod install
  4. 将“TyphoonInitialAssemblies”数组添加到我的plist文件
  5. 创建第一个程序集并将其添加到plist中的数组
  6. 在集会中,

    import Typhoon
    
    public class MyAssembly:TyphoonAssembly{}
    

    像魅力一样!

答案 3 :(得分:1)

您甚至遇到了此错误。

我通过以下方式修复: =>删除“platform:ios,'x.0'”

use_frameworks! 目标'晚期管理'做     pod'Alamofire'     pod'SwiftyJSON' 端