尝试AFIncrementalStore,它非常甜蜜。但是我遇到了一个我不完全确定如何处理的场景。
我有一个模型,它返回子关系的id,但不返回内容本身。例如: GET / groups
{"id":3,"description":"My Group","category_id":2}
我可以使用常规GET /类别获取所有类别。但我没有打电话给GET / group / 3 / categories
所以我不知道如何初始化group.category的子关系。我确信我错过了一些明显的东西,但是我们将非常感谢任何帮助。
有什么建议吗?
答案 0 :(得分:0)
使用AFIS时,您存储的每个对象都有资源标识符。在大多数情况下,您希望对象的id为其RI。因此,在这种情况下,category_id是类别对象的RI。因此,您只能使用其category_id创建类别对象。然后,当您获得所有类别时,您将填充类别对象的其他字段。这非常简单,因为AFIS足够聪明。
还有另一种方式。由于您可以使用常规GET /类别获取所有类别,因此每个类别都应包含具有组ID的字段。因此,您可以设置从类别到其组的关系。它会自动产生相反的关系。
答案 1 :(得分:0)
要建立@ nataliq的答案,这必须在你的AFRESTClient的representationsForRelationshipsFromRepresentation:ofEntity:fromResponse:
实现中。它应该有关系名称(“category”)作为键,另一个NSDictionary的类别id作为值。如果您的Group对象的Category关系被命名为“category”,并且您标准化了另一个对象的id属性以_id后缀命名,那么您可以执行以下操作:
- (NSDictionary *)representationsForRelationshipsFromRepresentation:(NSDictionary *)representation
ofEntity:(NSEntityDescription *)entity
fromResponse:(NSHTTPURLResponse *)response
{
NSMutableDictionary *mutableRelationshipRepresentations = [NSMutableDictionary dictionaryWithCapacity:[entity.relationshipsByName count]];
[entity.relationshipsByName enumerateKeysAndObjectsUsingBlock:^(id name, id relationship, BOOL *stop) {
id value = [representation valueForKey:[(NSString *)name stringByAppendingString:@"_id"]];
if (value && ![value isKindOfClass:[NSNull class]] && ![relationship isToMany]) {
NSDictionary *valueDict = @{@"id" : value};
[mutableRelationshipRepresentations setValue:valueDict forKey:name];
}
}];
return mutableRelationshipRepresentations;
}