1

我有一个简单的对象映射,并且作为关系,我添加了两个托管对象映射。我收到以下错误: 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];
4

2 回答 2

1

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

于 2013-06-18T23:28:47.780 回答
0

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

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

于 2014-01-09T00:06:27.973 回答