経由でオブジェクトのコレクションをロードしようとしてRestKit
いますが、この操作がメイン スレッドをブロックしていることがわかりました。具体的にUIViewController
は、メッセージに が表示されたときにこの機能が呼び出され-(void)viewDidAppear:(BOOL)animated;
ます。リクエストが読み込まれている間、ユーザーは UI を操作できず、操作が完了するまで待機する必要があります。
RestKit に要求を非同期で実行するように指示するにはどうすればよいでしょうか (既に実行されていると思いました)、メイン スレッドのブロックを停止するにはどうすればよいですか?
-(void)rtrvArtistsByStudio:(ISStudio *)studio
{
NSLog(@"Retrieving Artists for studio %ld", [studio studioID]);
NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
NSDictionary *params = [NSDictionary dictionaryWithObject:[NSString stringWithFormat:@"%ld", [studio studioID]] forKey:@"studioID"];
NSURLRequest *request = [restkit requestWithObject:nil method:RKRequestMethodGET path:@"/restAPI/rtrvArtistsByStudio" parameters:params];
RKManagedObjectRequestOperation *operation = [restkit managedObjectRequestOperationWithRequest:request managedObjectContext:restkit.managedObjectStore.persistentStoreManagedObjectContext success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
NSArray *artists = [mappingResult array];
[studio setArtists:artists];
[notificationCenter postNotificationName:nStudioLoadedArtists object:studio];
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
NSLog(@"Failed to load artists for studio %ld due to %@", [studio studioID], error);
[notificationCenter postNotificationName:nStudioFailedLoadingArtists object:studio];
}];
[restkit enqueueObjectRequestOperation:operation];
}
restkit
編集:のインスタンスへのポインタであることにも注意してくださいRKObjectManager
。
RestKit のバージョンは 0.20 です