安装 cocoapods 后使用未解析的标识符

Posted

技术标签:

【中文标题】安装 cocoapods 后使用未解析的标识符【英文标题】:use of unresolved identifier after cocoapods installation 【发布时间】:2015-07-28 06:15:59 【问题描述】:

我有一个没有 cocoapods 的 swift 项目,它使用 Parse SDK 和 Facebook SDK(用于登录和后端使用)。

创建 Podfile 以使用 GoogleMaps SDK(用于地点自动完成建议)时,我收到以下错误:Use of unresolved identifier 'PFFacebookUtils'。 Podfile 如下:

source 'https://github.com/CocoaPods/Specs.git'
xcodeproj './PROJECT_NAME.xcodeproj'

platform :ios, '8.1'
pod 'GoogleMaps'

包含链接的 Parse 和 Facebook 框架(在 cocoapods 创建工作区之前一切正常)。有任何想法吗?谢谢!

更新: 我不知道这是否有意义,但如果我在无法识别 PFFacebookUtils 的文件中使用import ParseFacebookUtilsV4,它会识别它,但现在我收到链接器错误(显然没有找到任何 Parse OBJC 类):

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_PFAnalytics"
       __TMaCSo11PFAnalytics in AppDelegate.o
  "_OBJC_CLASS_$_PFCloud", referenced from:
     ...

【问题讨论】:

尽管我不想这么说:删除 DerivedData 文件夹在更新一些 Cocoapods 后修复了我的构建问题。 【参考方案1】:

再次安装 pod:

-pod install

然后做一个检查清单:

    库搜索路径。在我的项目中,图书馆搜索路径是空的。所以我相信 cocoapods 不会修改它。因此,如果有的话,请从那里删除旧的库链接。

    标题搜索路径

    其他链接器标志。 (删除旧的)

    构建阶段 -> 将二进制文件与库链接。 (删除旧的)

确保这些指向 Pod 项目中的新库。而不是旧的。

我的 podfile 与关联的设置相匹配:

目标 'SomeName' 做

pod 'RadioButton'
pod 'AFNetworking', '~> 2.5'
pod 'SSZipArchive', '~> 0.2.1'
pod 'SDWebImage', '~> 3.7'

结束

target 'SomeNameTests' 做

结束

【讨论】:

它没有用,但感谢您的建议 :) 。我在 Podfile 中声明的唯一框架是 GoogleMaps,它仍然导致 Parse 框架出现问题,该框架被手动链接为静态库。我最终从我的项目中完全删除了 cocoapods,并在下载后手动嵌入了 GoogleMaps 框架(来自这里的整个 podspecs:github.com/CocoaPods/Specs) 很好,但我希望这不会让你害怕在其他项目中再次使用 cocoapods。因为,它真的很有帮助,可以节省很多时间和精力。 我确实喜欢 cocoapods,问题是在处理需要与 iOS 7.0+ 兼容的 Swift 项目时,因为 Swift 还不支持 use_frameworks! 一切都应该顺利进行,但对于这种特定情况,这不是一个选项:,( 嗨@hasan83,你在上面对header search paths说了什么?我应该删除它们还是什么?谢谢 这个答案是专门针对这个特定问题的。如果你想使用 cocoapods,请保留它们。如果您想停止使用可可豆荚,请将其移除【参考方案2】:

您是否在桥接头中导入了所需的文件:

#import <Parse/Parse.h> 
#import <ParseFacebookUtils/PFFacebookUtils.h>

【讨论】:

是的,其实我有#import &lt;ParseFacebookUtilsV4/PFFacebookUtils.h&gt; #import &lt;Parse/Parse.h&gt; 我将它们作为链接库,它们正在工作......但现在 cocoapods 破坏了它们,我已将它们添加到 Podfile 并将它们作为链接库删除,但 XCode 仍然无法识别PFFacebookUtils :/【参考方案3】:

我做了一个清理然后构建,一切都清理干净了

【讨论】:

以上是关于安装 cocoapods 后使用未解析的标识符的主要内容,如果未能解决你的问题,请参考以下文章

ParseFacebookUtilsV4、Swift 和 CocoaPods:未解析的标识符

出现错误:使用未解析的标识符“LinkingObjects”

Objective-C 库的 Swift “使用未声明的类型”

Objective-C 库的 Swift “使用未声明的类型”

使用 Cocoapods 导入 SwiftyJSON 时出错

Swift 2.3 pod 更新后使用未解析的标识符 Firebase 'FIR'