我有一个简单的对象映射,作为一种关系,我添加了两个托管对象映射。
我收到以下错误:
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];
答案 0 :(得分:1)
你应该使用2 RKObjectMapping
或2 RKEntityMapping
s,你不能真正混合搭配。如果根项目是托管对象,它可能会起作用,但你拥有它的方式有点奇怪。
答案 1 :(得分:0)
如果更改对象管理器以使用managedObjectRequestOperationWithRequest:managedObjectContext:success:fail而不是objectRequestOperationWithRequest:success:fail,那将通过managedObjectContext正确初始化核心数据实体。
我现在正在使用它,因为我有一个普通的NSObject作为响应类,其成员变量名为“value”,包含一个核心数据实体。