作为关系的非托管对象中的RESTKit托管对象

时间:2013-06-18 11:40:02

标签: restkit restkit-0.20

我有一个简单的对象映射,作为一种关系,我添加了两个托管对象映射。 我收到以下错误: CoreData: error: Failed to call designated initializer on NSManagedObject class 'Error'

如果不添加关系,则设置适用于RestKit。我还在网站上找到了关于此错误消息的一些其他主题,但路线正确并且persistencoordinator存在,所以我没有其他线索为什么它不起作用。


编辑:
这是我的映射:

RKEntityMapping *entityMapping = [RKEntityMapping mappingForEntityForName:@"MyManagedObject" inManagedObjectStore:[RKManagedObjectStore defaultStore]];
[entityMapping addAttributeMappingsFromArray:@[@"property1", @"property2"]];

RKObjectMapping *objectMapping = [RKObjectMapping mappingForClass:[MyObjectForRequest class]];
[objectMapping addAttributeMappingsFromArray:@[@"someProperty1", @"someProperty2"]];
[objectMapping addRelationshipMappingWithSourceKeyPath:@"EntityProperty" mapping:entityMapping];
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:objectMapping pathPattern:@"SomeLink" keyPath:@"" statusCodes:statusCodes];
[[RKObjectManager sharedManager] addResponseDescriptor:responseDescriptor];

现在来电:

NSMutableURLRequest *urlRequest = [[RKObjectManager sharedManager] requestWithObject:objectForRequest method:RKRequestMethodPOST @"SomeLink" parameters:nil];
RKObjectRequestOperation *operation = [[RKObjectManager sharedManager] objectRequestOperationWithRequest:urlRequest success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
        // Do something
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
        // Handle error
}];
[operation start];

2 个答案:

答案 0 :(得分:1)

你应该使用2 RKObjectMapping或2 RKEntityMapping s,你不能真正混合搭配。如果根项目是托管对象,它可能会起作用,但你拥有它的方式有点奇怪。

答案 1 :(得分:0)

如果更改对象管理器以使用managedObjectRequestOperationWithRequest:managedObjectContext:success:fail而不是objectRequestOperationWithRequest:success:fail,那将通过managedObjectContext正确初始化核心数据实体。

我现在正在使用它,因为我有一个普通的NSObject作为响应类,其成员变量名为“value”,包含一个核心数据实体。