安装 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 <ParseFacebookUtilsV4/PFFacebookUtils.h> #import <Parse/Parse.h>
我将它们作为链接库,它们正在工作......但现在 cocoapods 破坏了它们,我已将它们添加到 Podfile 并将它们作为链接库删除,但 XCode 仍然无法识别PFFacebookUtils
:/【参考方案3】:
我做了一个清理然后构建,一切都清理干净了
【讨论】:
以上是关于安装 cocoapods 后使用未解析的标识符的主要内容,如果未能解决你的问题,请参考以下文章
ParseFacebookUtilsV4、Swift 和 CocoaPods:未解析的标识符
出现错误:使用未解析的标识符“LinkingObjects”
Objective-C 库的 Swift “使用未声明的类型”
Objective-C 库的 Swift “使用未声明的类型”