1

私はIOS開発とRestkitが初めてです。データが外部 Web サービスから json 形式で読み込まれるアプリケーションを作成しています。コアデータにマッピングされている何千ものユーザー オブジェクトがあります。

これらのユーザーを次のようにロードしています。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
DBUser* user = [DBUser currentUser];
    if ([user isLoggedIn]) {
        [self loadRequiredData];
    }
}

次に、loadRequiredData で

- (void)loadRequiredData {
    RKObjectManager *manager = [RKObjectManager sharedManager];
    manager.requestQueue.concurrentRequestsLimit = 10;
    [manager loadObjectsAtResourcePath:@"/users" delegate:self];
}

CoreData ですべてのユーザー オブジェクトをマップするには、約 4 ~ 5 分かかります。ここでの問題は、Restkit がこれらの数千のユーザーを CoreData にマッピングするのに忙しいとき、Web サービスに送信された他の要求が待機状態になることです。すべてのユーザーが CoreData にマップされると、待機中の要求が実行されます。

ConcurrentRequestLimit の数を 10 に増やしてみました

manager.requestQueue.concurrentRequestsLimit = 10;

しかし、これもうまくいきません

バックグラウンドまたは他のスレッドでオブジェクトをマップする方法はありますか? そのため、この期間中に送信された他のリクエストは迅速に実行される必要があります。

4

2 に答える 2

1

このように loadRequiredData メソッドを呼び出すだけです [self performSelectorInBackground:@selector(loadRequiredData) withObject:nil];

于 2012-10-31T06:25:55.883 に答える