1

私はrestkitを学び、現在オブジェクトマッピングに取り組んでいます。これが私が受信して処理しようとしているJSONです(ASP.NET MVC Web APIによって生成されます):

[
    {
        "Id": 0,
        "Title": "Test",
        "Location": "Test",
        "Score": {
            "Hill": 10,
            "LVille": 12
        },
        "TimeStart": "2012-11-10T12:30:00",
        "TimeEnd": "2012-11-10T13:20:00",
        "Gender": 0,
        "State": 0
    },
    {
        "Id": 0,
        "Title": "ee",
        "Location": "12:00",
        "Score": {
            "Hill": 13,
            "LVille": 0
        },
        "TimeStart": "12:00 PM",
        "TimeEnd": "12:00 PM",
        "Gender": 1,
        "State": 1
    }
]

マップされているオブジェクトは(SBGame)です:

@interface SBGame : NSObject

@property (nonatomic, copy) NSNumber* Id;
@property (nonatomic, copy) NSString* Title;
@property (nonatomic, copy) NSString* Location;
@property (nonatomic, strong) SBScore* Score;
@property (nonatomic, copy) NSString* TimeStart;
@property (nonatomic, copy) NSString* TimeEnd;
@property (nonatomic, copy) NSNumber* Gender;
@property (nonatomic, copy) NSNumber* State;

@end

およびSBScore:

@interface SBScore : NSObject
@property (nonatomic, copy) NSNumber* Hill;
@property (nonatomic, copy) NSNumber* LVille;
@end

最後になりましたが、オブジェクトのマッピング

RKObjectMapping *ScoreMapping = [RKObjectMapping mappingForClass:[SBScore class]];
[ScoreMapping addAttributeMappingsFromArray:@[@"Hill", @"LVille"]];


RKObjectMapping *GameMapping = [RKObjectMapping mappingForClass:[SBGame class]];
[GameMapping addAttributeMappingsFromDictionary:@{
    @"Id" : @"Id",
    @"Title" : @"Title",
    @"Location" : @"Location",
    @"TimeStart" : @"TimeStart",
    @"TimeEnd" : @"TimeEnd",
    @"Gender" : @"Gender",
    @"State" : @"State",
 }];

[GameMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"score" toKeyPath:@"score" withMapping:ScoreMapping]];


RKResponseDescriptor *decp = [RKResponseDescriptor responseDescriptorWithMapping:GameMapping pathPattern:@"/Games" keyPath:nil statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[objectManager addResponseDescriptor:decp];

結局のところ、私が受け取るエラーは

2012-12-29 16:49:19.553 Scoreboard[3004:c07] Failure with error Error Domain=org.restkit.RestKit.ErrorDomain Code=1001 
"Unable to find any mappings for the given content" UserInfo=0x75c1460 {DetailedErrors=(
), NSLocalizedDescription=Unable to find any mappings for the given content, keyPath=null}

私はRestKitを初めて使用し、オブジェクトマッピングチュートリアルを確認しましたが、それでも機能しません。どんなアイデアでも大歓迎です。

4

1 に答える 1

1

私はそれを考え出した。デフォルトのインスタンスを作成したときに、ベースURLを作成してwww.example.com/apiから、バインディングとgetObjectsメソッドを作成しました。/Games

私がすべきことは、ベースURLwww.example.comにパスパターンを設定させ/api/Games、getObjectsメソッドを呼び出すことです。/api/games

したがって、示されているコードから

RKResponseDescriptor *decp 
= [RKResponseDescriptor responseDescriptorWithMapping:GameMapping
                                          pathPattern:@"/Games" 
                                              keyPath:nil
                                          statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];

に変更

RKResponseDescriptor *decp 
= [RKResponseDescriptor responseDescriptorWithMapping:GameMapping
                                          pathPattern:@"/api/Games"
                                              keyPath:nil
                                          statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
于 2012-12-30T05:54:51.570 に答える