1

我是 IOS 开发和 Restkit 的新手。我正在创建一个应用程序,其中数据以 json 格式从外部 web 服务加载,并且有数千个用户对象,它们在 coredata 中映射。

我正在加载这些用户,如下所示:

- (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

这很明显,如果您在移动应用程序数据库中插入数千个条目,则必须花费很多时间。您可以使用此方法在映射开始时显示活动指示器。

- (void)objectLoader:(RKObjectLoader *)loader willMapData:(inout id *)mappableData;
于 2013-05-30T06:02:25.377 回答
1

只需像这样调用方法 loadRequiredData [self performSelectorInBackground:@selector(loadRequiredData) withObject:nil];

于 2012-10-31T06:25:55.883 回答