无法使用 CoreData 配置 RestKit

Posted

技术标签:

【中文标题】无法使用 CoreData 配置 RestKit【英文标题】:Cannot configure RestKit with CoreData 【发布时间】:2015-06-01 13:51:55 【问题描述】:

我确实设置了我的项目以使用 RestKit 和 CoreData:在我的 Podfile 中添加了“Link binary with libraries”和“pod 'RestKit', '~> 0.24.0'”中的 CoreData 框架。

一切看起来都很好,直到我尝试使用 RKObjectManager 的方法

managedObjectRequestOperationWithRequest:managedObjectContext:success:failure:

Xcode 给我以下错误:

“RKObjectManager”没有可见的@interface 声明选择器“managedObjectRequestOperationWithRequest:managedObjectContext:success:failure:”

在RKObjectManager.h中这个方法之前有一个#ifdef RKCoreDataIncluded预处理指令,RKCoreDataIncluded是这样定义的:

#ifdef _COREDATADEFINES_H
#if __has_include("RKCoreData.h")
#define RKCoreDataIncluded
#import "RKManagedObjectStore.h"
#import "RKManagedObjectRequestOperation.h"
#endif
#endif

我不知道还需要做什么才能在 RestKit 中启用 CoreData?

【问题讨论】:

请发布调用该方法的代码,以及您的 moc 和 RKObjectManager 的设置。 【参考方案1】:

事实证明,为了将 RestKit 与 CoreData 一起使用,您必须为您的项目创建预编译的头文件并添加以下行:

#import <CoreData/CoreData.h>

这里讨论这个问题:https://github.com/RestKit/RestKit/issues/1564

【讨论】:

PCH 文件中的顺序现在很重要,而以前不重要。在我意识到之前更新了 RestKit 后,我​​为此挠了一阵子。 CoreData 的导入必须在 RestKit 的导入之前进行。【参考方案2】:

在编译时,RestKit 预计 Core Data 已经被导入。因此,只需在 RestKit 之前导入 Core Data:

#import <CoreData/CoreData.h>
#import <RestKit/RestKit.h>

无需创建预编译头文件,这会在库和目标中的每个类之间创建依赖关系。

【讨论】:

以上是关于无法使用 CoreData 配置 RestKit的主要内容,如果未能解决你的问题,请参考以下文章

RestKit:无法使用 coredata 执行映射

无法让 Restkit 0.20 + CoreData 工作

RestKit 和 CoreData 无法关闭日志模式的问题

我可以防止 RestKit+CoreData 覆盖本地实体更改吗?

RestKit 与直接 CoreData

RestKit 内存核心数据存储的配置