4

このような Client というオブジェクトがあります。

@interface Client : NSManagedObject
    @property (nonatomic, retain) NSString * firstName;
    @property (nonatomic, retain) NSString * middleName;
    @property (nonatomic, retain) NSString * lastName;
    @property (nonatomic, retain) Styles *clientStyles;
@end

Styles は、Client の下にネストされたオブジェクトです。それは一対一の関係です。これがJSONでサーバーから降りてくるとこんな感じ。

{
    "firstName": "",
    "middleName": "",
    "lastName": "",
    "firstStyle": {
        "styleId": 4,
        "name": "",
        "description": "",
        "stylingTime": "55 min",
        "stylingProductUsage": "A lot",
        "chemicals": "LOTS O'GEL",
        "deleted": false,
        "modifiedOn": 1357161168830
    }
}

すべてが素敵な単一のオブジェクトにあります。これをプルダウンして、問題なくオブジェクトにマップできます。これをサーバーに戻す必要があるときに問題が発生します。この形式である必要があります。

{
    "firstName": "",
    "middleName": "",
    "lastName": "",
    "styles": [
        {
            "styleId": 4,
            "name": "",
            "description": "",
            "stylingTime": "55 min",
            "stylingProductUsage": "A lot",
            "chemicals": "LOTS O'GEL",
            "deleted": false,
            "modifiedOn": 1357161168830
        }]

}

リターン マッピングでは、スタイル エンティティが 1 対 1 ではなく配列内にあるため、これは非常に問題です。これまでのところ、これを RKRequestDescriptor として取得しています

RKObjectMapping *requestMapping = [RKObjectMapping requestMapping];
[requestMapping addAttributeMappingsFromDictionary:@{
     @"firstName": @"firstName",
     @"middleName": @"middleName",
     @"lastName": @"lastName",
 }];
RKRequestDescriptor *requestDescriptor = [RKRequestDescriptor  requestDescriptorWithMapping:requestMapping
                                                                               objectClass:[Client class]
                                                                               rootKeyPath:nil];

HECK がマッピングを作成して、1 つの値を持つ Style オブジェクトの配列を返すにはどうすればよいですか?

4

1 に答える 1

0

ワイルドな推測ですが、マッピングはかなりスマートです。次のようなことはできませんか:

RKObjectMapping *requestMapping = [RKObjectMapping requestMapping];
[requestMapping addAttributeMappingsFromDictionary:@{
     @"firstName": @"firstName",
     @"middleName": @"middleName",
     @"lastName": @"lastName",
 }];

RKObjectMapping *stylesMappingDescription = [RKObjectMapping requestMapping];
[requestMapping addAttributeMappingsFromDictionary:@{
     @"properties": @"here"
 }];

[requestMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"styles.0" toKeyPath:@"styles" withMapping:stylesMappingDescription]];

RKRequestDescriptor *requestDescriptor = [RKRequestDescriptor      requestDescriptorWithMapping:requestMapping
                                                                               objectClass:[Client class]
                                                                           rootKeyPath:nil];

(styles.0 as に注意してくださいfromKeyPath)

于 2013-04-12T09:00:40.423 に答える