use_frameworks!和图书馆仓库的根目录中的podspec

时间:2015-05-05 13:04:22

标签: ios swift cocoapods

我的iOS项目中有以下依赖项:

source 'https://github.com/CocoaPods/Specs.git'
use_frameworks!
platform :ios, '8.0'

pod 'CocoaLumberjack'

# other dependencies here    

pod 'MagicalRecord', :git => 'https://github.com/magicalpanda/MagicalRecord.git', :branch => 'develop'

我目前使用最新版本的CocoaPods(0.37.0)。 pod install没有警告或错误,但是当我尝试构建时,我收到链接器错误:

Undefined symbols for architecture armv7:
  "_OBJC_CLASS_$_DDLog", referenced from:
      objc-class-ref in MagicalRecord+ErrorHandling.o
      objc-class-ref in NSManagedObject+MagicalDataImport.o
      objc-class-ref in NSManagedObject+MagicalRecord.o
      objc-class-ref in NSManagedObjectContext+MagicalObserving.o
      objc-class-ref in NSManagedObjectContext+MagicalRecord.o
      objc-class-ref in NSManagedObjectContext+MagicalSaves.o
      objc-class-ref in NSObject+MagicalDataImport.o

显然,MagicalRecord没有看到提供符号的CocoaLumberjack。文档说:

有时您可能想要使用Pod的最新版本,特定版本或您自己的分支。如果是这种情况,您可以使用pod声明指定。 值得注意的是,这意味着该版本必须满足其他Pod对Pod的任何其他依赖关系。

但是,没有解释应该如何确切地满足这些依赖性。有谁能解释一下?一切正常,直到我添加use_frameworks!以使用在Swift中编写的pod。

1 个答案:

答案 0 :(得分:2)

通过在CocoaLumberjack.framework中生成的Pods-MagicalRecord目标中关联Pods.xcodeproj,可以找到解决此问题的方法。这将允许MagicalRecord查看DDLog,因此您应该能够编译。但是,它是一个非常脆弱的解决方案,因为每次通过运行pod install重新生成Pod项目时,您都需要重新链接框架。

source