尝试使用RestKit 0.23.3
的托管对象,我遇到以下问题:
编译抱怨:
Reciever 'RKManagedObjectRequestOperation' for class message is a forward declaration
和
Reciever type 'RKManagedObjectRequestOperation' for instance message is a forward declaration
-(void)startOperation {
NSIndexSet *statusCodes = RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful);
RKObjectManager *objectManager = [CPRObjectManager comprintObjectManager];
NSURLRequest *request = [objectManager requestWithObject:nil method:RKRequestMethodGET path:self.pathPattern parameters:self.requestParameters];
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:self.mapping method:RKRequestMethodAny pathPattern:self.pathPattern keyPath:self.keyPath statusCodes:statusCodes];
// This is straight from RK Docs: https://github.com/RestKit/RestKit - Section: Managed Object Request
// ERROR: http://gyazo.com/89ae7db26a367f0416c47549b6ea8cf3
RKManagedObjectRequestOperation *operation = [[RKManagedObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[responseDescriptor]];
RKManagedObjectStore *store = [[CPRPersistentStack sharedDataModel] objectStore];
}
遵循文档:https://github.com/RestKit/RestKit - 部分:托管对象请求看起来initWithRequest:responseDescriptors:被称为RKManagedObjectRequestOperation的类方法。
https://gist.github.com/wethu/2c6a7dfcbbc62af9dd36完整的文件包含在那里,任何人都知道发生了什么?
答案 0 :(得分:3)
如果有人发现这个主题是因为它与Swift有关,那么Swift实现的解决方案是手动将其添加到桥接标题:
#import <RKManagedObjectRequestOperation.h>
因为即使你做了
import CoreData
RestKit无法看到它已导入。我没有找到任何其他解决方案。
答案 1 :(得分:2)
因此,在此之后的几个小时,我仍然不知道为什么编译器无法获取此初始化程序的方法签名。 但我通过添加:
#import "RKManagedObjectRequestOperation.h"
到我的实施档案。
所有其他RK类都发现问题很好,我不知道为什么这个类需要手动包含在#import <RestKit/RestKit.h>
之外的头文件。
击>
修改强>
我对这个解决方案不满意,我挖得更深,发现:
Network.h
有这个:
#ifdef _COREDATADEFINES_H
#import "RKManagedObjectRequestOperation.h"
#endif
因此检查_COREDATADEFINES_H未定义我发现我的<project>.pch
文件丢失#import <CoreData/CoreData.h>
因此,正确的解决方案是将其添加到我的pch文件中,它解决了我的问题。
我希望这可以帮助其他人,这看起来有点具体,但是你永远不知道还有谁跟着这条路走到了这一步。