2

RestKit 0.10.1を使用していて、結果をページ分割するWebサービスを処理するためのサンプルコードを探しています。パラメータなしで最初のページをフェッチしてUITableViewに貼り付けるGETリクエストがあります。理想的には、ページの下部に到達すると、次のページをフェッチして、それらの値を下部に挿入します。

テーブルの端にそれらをタックする方法よりもフェッチを行う方法に関心があることを明確にする必要があると思いますが、それについての提案があれば、私はそれらを聞いてみたいです。また、これらのレコードは管理対象オブジェクトに保存されておらず、メモリ内にあるだけです。

更新: Google検索を「ページング」から「ページング」に切り替えた後、RKObjectPaginatorに出くわし、処理しているAPIがかなり頭がおかしく、現在のページやそのページに関するカウントやデータが出力されないことに気付きました。サイズ。

4

1 に答える 1

4

あなたが言うように、あなたは通常RKObjectPaginatorを使うことができます。ただし、APIに準拠していないと、うまく機能しない場合もあります。

次のような操作を行うことで、ページ付けを完全にカスタマイズできます。

1)RKObjectPaginatorのサブクラス(または、そのルートをたどりたい場合は独自のクラス)を作成します。

2)重要なのはこのデリゲートメソッドをオーバーライドすることです

- (void) objectLoader:(RKObjectLoader *)loader willMapData:(inout __autoreleasing id *)mappableData;

3)このメソッドでは、mappableDataオブジェクトを取得し、「次のページ」パラメーターを見つけます。ただし、これを行うかどうかはあなた次第です。以下は、BingAPIを使用した例です。

- (void) objectLoader:(RKObjectLoader *)loader willMapData:(inout __autoreleasing id *)mappableData {
    NSMutableDictionary* d = [[*mappableData objectForKey: @"d"] mutableCopy];

    NSString* next = [d objectForKey: @"__next"];

    if(!next) {
        currentOffset = 0;
    }
    else {
        NSDictionary* params = [next queryParameters];
        perPage = [[params objectForKey: @"$top"] intValue];
        currentOffset = [[params objectForKey: @"$skip"] intValue];
    }
}

重要なことは、データをターゲットオブジェクトに渡す前に、データをマップすることです。これにより、1つの応答で2つのマップを効果的に実行できます(1つはページネーターオブジェクトへのマップ、もう1つはデータモデルへのマップ)。

于 2012-08-01T06:42:43.200 に答える