2

RestKit と Objective C は初めてです。RestKit を使用して Web サービスからデータを取得しようとしています。マッピングを行いましたが、応答に一致するものを見つけることができなかったというエラーが発生しています。JSON 形式にはキーがないため、KVC なしでマッピングを使用しています。

これがマッピングの実装です

+(RKObjectMapping *)venueMapping {
     RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[venue class]];
     NSDictionary *mappingDictionary = @{@"name":@"name"};
    [mapping addAttributeMappingsFromDictionary:mappingDictionary];

    return mapping;
 } 

何かが一致するかどうかを確認するために、値を 1 つだけ使用しようとしています。以下は応答記述子です

-(void) loadVenue:(void (^)(venue *))success failure:(void (^)(RKObjectRequestOperation *, NSError *))failure{

     RKLogConfigureByName("RestKit/ObjectMapping", RKLogLevelTrace);
     [self getObjectsAtPath:@"venue" parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult){

    if(success){
        venue *venues = (venue *)[mappingResult.array firstObject];
        success(venues);
    }

    }failure:^(RKObjectRequestOperation *operation, NSError *error){
        if(failure){
           failure(operation,error);
    }
}];

}

- (void) setupResponseDescriptors {
[super setupResponseDescriptiors];

RKResponseDescriptor *authenticatedUserResponseDescriptors = [RKResponseDescriptor responseDescriptorWithMapping:[MappingProvider venueMapping] method:RKRequestMethodGET pathPattern:@"venue" keyPath:@"" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[self addResponseDescriptor:authenticatedUserResponseDescriptors];
}

私はドキュメントを読んでさまざまな方法を試してきましたが、これに対する解決策はまだありません。誰でも何か考えがありますか?

サンプルの JSON リターンが添付されています。

 (
    {
    coverType = "<null>";
    description = "";
    name = "McDonald";
    priv = 1;
    rates = ();
    },
    {
    coverType = "<null>";
    description = "";
    name = "My House";
    priv = 1;
    rates =();
    },
 )

トレースログを追加

2014-04-22 21:45:55.636 App_Test[420:60b] I restkit:RKLog.m:34 RestKit logging initialized...
2014-04-22 21:45:56.064 App_Test[420:60b] I restkit.network:RKObjectRequestOperation.m:180 GET 'http://api.kontakt.io/venue'
2014-04-22 21:46:46.327 App_Test[420:f03] D restkit.object_mapping:RKMapperOperation.m:377 Executing mapping operation for representation: (
        {
        beacons =         (
        );
        beaconsCount = 0;
        coverType = "<null>";
        description = "";
        id = "212321";
        lat = "<null>";
        lng = "<null>";
        managers =         (
        );
        name = McDonald;
        priv = 1;
        rates =         (
        );
        users =         (
        );
    }
)
 and targetObject: (null)
2014-04-22 21:46:46.328 App_Test[420:f03] D restkit.object_mapping:RKMapperOperation.m:403 Finished performing object mapping. Results: (null)
2014-04-22 21:46:46.328 App_Test[420:570b] E restkit.network:RKObjectRequestOperation.m:243 GET 'http://api.kontakt.io/venue' (200 OK / 0 objects) [request=0.9645s mapping=0.0000s total=50.3422s]: Error Domain=org.restkit.RestKit.ErrorDomain Code=1001 "No response descriptors match the response loaded." UserInfo=0x9556ab0 {NSErrorFailingURLStringKey=http://api.kontakt.io/venue, NSLocalizedFailureReason=A 200 response was loaded from the URL 'http://api.kontakt.io/venue', which failed to match all (0) response descriptors:, NSLocalizedDescription=No response descriptors match the response loaded., keyPath=null, NSErrorFailingURLKey=http://api.kontakt.io/venue, NSUnderlyingError=0x9557c30 "No mappable object representations were found at the key paths searched."}
4

3 に答える 3

4

エラーメッセージには次のように記載されています。

すべて (0) の応答記述子に一致しませんでした

これは、((0)メッセージ内の により)setupResponseDescriptorsメソッドが呼び出されていないため、応答記述子がオブジェクト マネージャーに追加されていないことを示しています。

于 2014-04-22T15:13:40.673 に答える
0

CoreData を使用していない場合は、Restkit がPodfile次のように定義されていることを確認してください。

pod 'RestKit/Network', '~> 0.23' pod 'RestKit/ObjectMapping', '~> 0.23'

于 2014-09-20T18:30:21.750 に答える
0

パス「会場」でオブジェクトを取得しようとしていますが、JSON に「会場」オブジェクトがあることを示す兆候はないようです。

于 2014-04-20T13:32:50.020 に答える