我正在处理我的第一个RestKit应用程序,并使用CoreData进行本地缓存。在这里我有一个多对多的关系Post < < --- >>分类。这种关系被称为帖子和类别。RestKit多对多映射,如何?
在我的Post JSON调用中,我得到了如下类别的ID:{"post": [...] "categories":[1,4] [...]
,其中1和4是ID。
我有一个从NSManagedObject
继承的自定义Post
模型对象,在这我有类别的属性,像这样:
@interface Post : NSManagedObject
[...]
@property (nonatomic, retain) NSSet *categories;
[...]
我做一个自定义的类模型对象同样的事情。
我的映射,目前看起来是这样的:
RKManagedObjectMapping *categoryMapping = [RKManagedObjectMapping mappingForClass:[Category class] inManagedObjectStore:objectManager.objectStore];
categoryMapping.primaryKeyAttribute = @"categoryId";
categoryMapping.rootKeyPath = @"categories";
[categoryMapping mapKeyPath:@"id" toAttribute:@"categoryId"];
[categoryMapping mapKeyPath:@"name" toAttribute:@"name"];
[...]
RKManagedObjectMapping* postMapping = [RKManagedObjectMapping mappingForClass:[Post class] inManagedObjectStore:objectManager.objectStore];
postMapping.primaryKeyAttribute = @"postId";
postMapping.rootKeyPath = @"post";
[postMapping mapKeyPath:@"id" toAttribute:@"postId"];
[...]
[postMapping mapKeyPath:@"created_at" toAttribute:@"createdAt"];
[...]
// Categories many-to-many.
[postMapping mapKeyPath:@"categories" toRelationship:@"categories" withMapping:categoryMapping];
当我运行此我得到的错误:'[<__NSCFNumber 0x6c625e0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key id.'
我真的很感激,如果有人可以给我如何映射这种关系的任何线索。
感谢,决定改变JSON到'“类别”:[{“category_id”:1},{“category_id”:4}]',你知道我应该如何以及何时填充连接表吗?我目前只获取类别。谢谢! – Anders
什么是连接表?这实际上是另一个问题。 –
是的,谢谢。连接表是两个多对多实体之间的表,其中存储了两个表中的主键。实际上,当我加载帖子时,它实际上会填充这个连接表,但是由于某种原因,它还会在我的类别模型中创建新行。很可能会问这个问题的另一个问题。但改变JSON似乎有所帮助,没有错误没有更多。谢谢! – Anders