Ios Restkit映射一对多
我有这样的映射:Ios Restkit映射一对多,ios,core-data,restkit,Ios,Core Data,Restkit,我有这样的映射: RKObjectMapping *pageMapping = [RKEntityMapping mappingForEntityForName:@"Page" inManagedObjectStore:[RKManagedObjectStore defaultStore]]; [pageMapping addAttributeMappingsFromArray:@[ @"rows, columns", @"header", @"size", @"backgroundColor"
RKObjectMapping *pageMapping = [RKEntityMapping mappingForEntityForName:@"Page" inManagedObjectStore:[RKManagedObjectStore defaultStore]];
[pageMapping addAttributeMappingsFromArray:@[ @"rows, columns", @"header", @"size", @"backgroundColor" ]];
RKObjectMapping *objectMapping = [RKEntityMapping mappingForEntityForName:@"Object" inManagedObjectStore:[RKManagedObjectStore defaultStore]];
[objectMapping addAttributeMappingsFromArray:@[ @"content", @"crop", @"fontName", @"fontSize", @"height", @"width",
@"paddingLeft", @"paddingTop", @"paddingRight", @"paddingBottom", @"src", @"textColor", @"type", @"url", @"posX", @"posY" ]];
[objectMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"objects" toKeyPath:@"objects" withMapping:pageMapping]];
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:pageMapping pathPattern:nil keyPath:@"pages" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[[RKObjectManager sharedManager] addResponseDescriptor:responseDescriptor];
[[RKObjectManager sharedManager] getObjectsAtPath:[magazine contentPath]
parameters:nil
success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
[self sortPageResult];
Page *page = (Page *)[self.pagesFetchedResultController objectAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
NSLog(@"%d", [[page objects] count]);
//[self changeStatusToDownloaded:[magazine magazineID]];
[self.collectionView reloadData];
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
[self displayError];
NSLog(@"Product error: %@", [error localizedDescription]);
[self.collectionView reloadData];
}];
Relationship 'objects' fault on managed object (0x1d8b57a0) <Page: 0x1d8b57a0> (entity: Page; id: 0x1d8b0740 <x-coredata://30A44191-D972-4222-88DF-539C2875F293/Page/p1> ; data: {
backgroundColor = FFFFFF;
columns = 0;
content = nil;
header = 1;
link = nil;
magazine = nil;
margin = 0;
objects = "<relationship fault: 0x1d8aea40 'objects'>";
pageID = nil;
rows = 0;
size = 1;
})
我有一个映射问题。我清楚地映射了“页面”对象,但无法映射“对象”。当我尝试它时,我得到如下结果:
RKObjectMapping *pageMapping = [RKEntityMapping mappingForEntityForName:@"Page" inManagedObjectStore:[RKManagedObjectStore defaultStore]];
[pageMapping addAttributeMappingsFromArray:@[ @"rows, columns", @"header", @"size", @"backgroundColor" ]];
RKObjectMapping *objectMapping = [RKEntityMapping mappingForEntityForName:@"Object" inManagedObjectStore:[RKManagedObjectStore defaultStore]];
[objectMapping addAttributeMappingsFromArray:@[ @"content", @"crop", @"fontName", @"fontSize", @"height", @"width",
@"paddingLeft", @"paddingTop", @"paddingRight", @"paddingBottom", @"src", @"textColor", @"type", @"url", @"posX", @"posY" ]];
[objectMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"objects" toKeyPath:@"objects" withMapping:pageMapping]];
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:pageMapping pathPattern:nil keyPath:@"pages" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[[RKObjectManager sharedManager] addResponseDescriptor:responseDescriptor];
[[RKObjectManager sharedManager] getObjectsAtPath:[magazine contentPath]
parameters:nil
success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
[self sortPageResult];
Page *page = (Page *)[self.pagesFetchedResultController objectAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
NSLog(@"%d", [[page objects] count]);
//[self changeStatusToDownloaded:[magazine magazineID]];
[self.collectionView reloadData];
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
[self displayError];
NSLog(@"Product error: %@", [error localizedDescription]);
[self.collectionView reloadData];
}];
Relationship 'objects' fault on managed object (0x1d8b57a0) <Page: 0x1d8b57a0> (entity: Page; id: 0x1d8b0740 <x-coredata://30A44191-D972-4222-88DF-539C2875F293/Page/p1> ; data: {
backgroundColor = FFFFFF;
columns = 0;
content = nil;
header = 1;
link = nil;
magazine = nil;
margin = 0;
objects = "<relationship fault: 0x1d8aea40 'objects'>";
pageID = nil;
rows = 0;
size = 1;
})
受管对象(0x1d8b57a0)上的关系“对象”错误(实体:页面;id:0x1d8b0740;数据:{
背景颜色=FFFFFF;
列=0;
内容=零;
标题=1;
链接=零;
杂志=无;
保证金=0;
objects=“”;
pageID=nil;
行=0;
尺寸=1;
})
谢谢回复 新进展
我改变了:
[objectMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"objects" toKeyPath:@"objects" withMapping:pageMapping]];
相反:
[pageMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"items" toKeyPath:@"items" withMapping:itemMapping]];
现在映射是正确的,但是映射会导致“对象”实体的重复。只有一个对象在一次又一次地重新生成://当RESTKIT第一次映射数据时,似乎没有“对象”对象。然后,当我从核心数据中获取它时,我得到的错误就像刚刚将RKRelationshipMapping实例的assignmentPolicy值设置为RKUnionAssignmentPolicy一样。见此帖: