現在、iOS プロジェクトで RestKit バージョン 0.20.3 を使用して、バックエンド Web サービスと通信しています。
場合によっては、Web サービスがタグの配列 (django-taggit) を文字列形式で返し、各タグ文字列をコア データ エンティティにマップする必要がありました。
// example JSON from web service
"response" : { "tags": ["tag1", "tag2", "tag3"] }
// example Core Data entities
@interface TagEntity : NSManagedObject
@property (nonatomic, retain) NSString *tagName;
@end
以下の説明から、タグ文字列の配列をコア データ オブジェクトにマップする方法を見つけました。
https://groups.google.com/forum/#!topic/restkit/54eZFQIjl7c
tagEntityMapping = [RKEntityMapping mappingForEntityForName:@"TagEntity" inManagedObjectStore:[RKManagedObjectStore defaultStore]];
[tagEntityMapping addPropertyMapping:[RKAttributeMapping mappingFromKeyPath:nil toKeyPath:@"tagName"]]
tagEntityMapping.identificationAttributes = @[@"tagName"];
[resultEntityMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"tags" toKeyPath:@"tags"withMapping:tagEntityMapping]];
現在、タグ文字列の配列を Core Data オブジェクトから Web サービスに投稿する方法を探しています。
言い換えると、TagEntity Core Data オブジェクトの配列がある場合、[TagEntity tagName] の配列を送信したいと考えています。
これを実現するために、[resultEntityMapping inverseMapping] をリクエスト マッピングとして使用しましたが、結果として、
"request" : { "tags": [{"tag1": {}}, {"tag2": {}}, {"tag3": {}}] }
私が本当に手に入れたいのは
"request" : { "tags": ["tag1", "tag2", "tag3"] }
助けていただければ幸いです。ありがとう!