RKObjectMapping.h文件未找到。

48
我运行了 "pod update" 命令,现在我的 RestKit 版本是 0.25.0,我的 RKValueTransformers 版本是 1.1.2,出现了一个错误:"RKObjectMapping.h" 找不到。我查看了 RestKit 的 Github 页面,没有找到新版本更改了什么内容。
以下步骤可以重现此错误:
1) 创建一个新项目 2) 运行 "pod init" 命令 3) Podfile 如下:
platform :ios, '8.3'
#pod 'RestKit', '~> 0.20.0'
#pod 'RestKit', '~> 0.24.1'
pod 'RestKit'
在所有不同版本的情况下,问题是相同的。
3)打开 .xcworkspace。 4)在 viewcontroller.m 中。
#import <RestKit/ObjectMapping/RKObjectMapping.h>
#import <RestKit/ObjectMapping/RKRelationshipMapping.h>
#import <RestKit/Network/RKResponseDescriptor.h>
#import <RestKit/Network/RKObjectRequestOperation.h>
#import <RestKit/Support/RKLog.h>
#import <RestKit/CoreData/RKEntityMapping.h>
#import <RestKit/Network/RKObjectManager.h>
或者
#import "RKObjectMapping.h"
#import "RKRelationshipMapping.h"
#import "RKResponseDescriptor.h"
#import "RKObjectRequestOperation.h"
#import "RKLog.h"
#import "RKEntityMapping.h"
#import "RKObjectManager.h"

错误仍然存在:"RKObjectMapping.h"在RestKit Pod文件中未找到

注意:我正在使用Xcode 7-beta5,Objective-C


你之前使用的版本是什么?导入 RKObjectMapping.h 是干什么用的? - Wain
之前的版本是0.24.1。 - chipbk10
它正在调用RKObjectMapping.h。问题是,即使我降级到之前的版本0.24.1,问题仍然存在。我创建了一个新项目并获取了RestKit 0.24.1,并从viewcontroller.m调用RKObjectMapping.h,但问题仍然存在。 - chipbk10
这意味着您有一个不相关的问题。Pod 是否正在正确构建?是否一切都已正确下载?您是否打开了工作区? - Wain
是的,我不是第一次使用 Pod。我打开了.xcworkspace文件。您可以重现相同的错误。让我更新我的问题。 - chipbk10
2
我有同样的问题!使用cocoapods 0.38.2构建是可以的,但我无法将其提交到商店;而使用0.39.beta.4时出现了相同的错误。 - Michel
4个回答

96

当你不想动CocoaPods,因为修复它们本身就很麻烦时,有一种简单的方法可以解决这个问题。我已经按照以下方式解决了我的问题:

点击项目文件
然后进入构建设置
搜索"头文件搜索路径"
使用下拉菜单将其设为递归的

你应该寻找以下内容:

${PODS_ROOT}/Headers/Public/AFNetworking
${PODS_ROOT}/Headers/Public/Bolts
${PODS_ROOT}/Headers/Public/ISO8601DateFormatterValueTransformer
${PODS_ROOT}/Headers/Public/RKValueTransformers
${PODS_ROOT}/Headers/Public/RestKit 
${PODS_ROOT}/Headers/Public/SOCKit
${PODS_ROOT}/Headers/Public

5
我缺少${PODS_ROOT}本身。将它添加进去(并且递归地使其生效)解决了我的问题。你刚刚帮我省下了很多工作。谢谢! - iHiD
这就是为什么我喜欢 Stack 社区!愉快编码 :) - Milan Mendpara
2
如果将${PODS_ROOT}/Headers/Public设置为递归,为什么还要将所有其他子目录设置为递归?这个修复方法对我有效,但我只需要将顶级目录${PODS_ROOT}/Headers/Public设置为递归,而不是所有其他目录。 - Andy Obusek

75

经过一段时间的挣扎,我发现错误不是来自RestKit。它来自于升级最新版本的cocoapods(0.39.beta.4)。

头文件搜索路径不再处于递归模式。

解决方法就是将cocoapods版本降级到0.38.0。

1)移除最新版本的cocoapod

sudo gem uninstall cocoapods

2)安装0.38.0版本

sudo gem install cocoapods -v 0.38.0

希望能帮助到别人。

更新:

感谢Vig提供的方法,我们可以使用特定版本的pod:

pod _0.38.0_ update
pod _0.38.0_ install

12
顺便提一句,您不需要卸载 CocoaPods,可以通过使用 pod 0.38.0 install(下划线之间没有空格)来安装特定版本的 Pod。 - Vig
我在将Cocoapods升级到0.39.0之后遇到了相同的问题。降级回Cocoapods-0.38.2后,该问题不再出现。 - derjohng
在升级到OS X El Capitan后,我遇到了这个问题,发现找不到pods,然后默认安装了cocoapods的升级。 - Nick N
2
仍然存在Xcode 7.1的问题,将版本降级到0.38.0或0.38.2并不能解决这个问题。 - John Muchow
在我的情况下,使用0.38.0版本的pods是不够的。我还必须移除use_frameworks!并将头文件搜索路径设置为递归。 - TomL
RestKit项目中存在一个未解决的问题 https://github.com/RestKit/RestKit/issues/2288 - pablobart

1

这个问题在RestKit的开发分支中终于得到了解决,最终的补丁是1d8f3e332,我想。

希望它很快能合并到主干分支。

目前,如果你感觉勇敢,可以使用

pod 'RestKit', :git => 'git@github.com:RestKit/RestKit.git', :commit => '1d8f3e3325d959094a3f96c832bf9f54c9c48df3'

不幸的是,这对我来说并没有解决问题:现在我收到了重复对象声明警告。 - pr1001
我的猜测是你在某种程度上链接了两次RestKit。我建议尝试通过删除工作区并重新安装pods或从podfile中删除所有pods,运行pod update,然后恢复podfile并运行pod install来重置工作区。 - kball
kball的回答是唯一一个对我有用的。你应该把它作为一个答案。谢谢。我也使用了cocoapods 0.38.0。 - Antenehs
很高兴它对你有帮助。只需记得关注存储库,并在提交合并到发布时还原您的Podfile。 - kball
这对我没用。收到:“[!]安装RestKit出错 [!]无法下载'RestKit'。” - Bill Noto
这是一个非常老的问题,所以这个解决方案可能已经不再相关了。另外,这里引用的提交似乎在 github 上不再可用。我建议寻找更近期的帖子来解决这个问题,并检查 github 存储库是否提供任何帮助。 - kball

-4

我通过将Pods构建为框架来解决了这个问题。

use_frameworks!

1
这会产生副作用,需要iOS 8或更高版本。 - Juan
1
这具有严重的后果。 - MKoosej

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接