API のユーザー オブジェクトに対して次のような JSON ビューがあるとします。
{
"id": 1,
"posts": [
{ "id": 102 },
{ "id": 101 },
{ "id": 100 }
]
}
posts 配列には 3 つ以上のアイテムが存在することはなく、最新の 3 つを表すと想定されています。ただし、既にダウンロードされているような投稿がさらにある場合{ "id": 99 }
、RestKit はそれらが存在しないと見なし、ユーザー ビューの配列内の 3 つの投稿だけが残っていると見なします。
古い投稿を削除して新しい投稿のためのスペースを空けるのではなく、RestKit に新しく読み込まれた投稿を現在読み込まれている投稿とマージさせるにはどうすればよいですか?
これを行うためのより良い方法があれば、JSON を変更することにもオープンです。
これらは私のマッピングです:
RKEntityMapping *userMapping = [RKEntityMapping mappingForEntityForName:@"User" inManagedObjectStore:managedObjectStore];
[userMapping addAttributeMappingsFromDictionary:@{
@"avatar_url": @"avatarURL",
@"id": @"userID",
@"first_name": @"firstName",
@"last_name": @"lastName",
@"username": @"username",
@"followed": @"followed"
}];
userMapping.identificationAttributes = @[@"userID"];
RKEntityMapping *postMapping = [RKEntityMapping mappingForEntityForName:@"Post" inManagedObjectStore:managedObjectStore];
[postMapping addAttributeMappingsFromDictionary:@{
@"id": @"postID",
@"content_url": @"contentURL",
@"created_at": @"createdAt"
}];
postMapping.identificationAttributes = @[@"postID"];
[userMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"posts" toKeyPath:@"posts" withMapping:postMapping]];
[postMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"creator" toKeyPath:@"creator" withMapping:userMapping]];
[postMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"replies" toKeyPath:@"replies" withMapping:postMapping]];
[postMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"reply_to" toKeyPath:@"replyTo" withMapping:postMapping]];