RestKit 0.10 を使用する場合、指定されたデリゲート メソッドを使用できますobjectLoaderDidLoadUnexpectedResponse
。
- (void)objectLoaderDidLoadUnexpectedResponse:(RKObjectLoader *)objectLoader {
if ([[objectLoader response] statusCode] == 403) {
// Your action here
}
}
RestKit 0.20 では、単一のコードまたは一連のコードに対して応答記述子を使用できます。
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:responseMapping
pathPattern:nil
keyPath:@"yourKeyPath"
statusCodes:[NSIndexSet indexSetWithIndex:403]];
ドキュメントのその他のステータス コード セット。
アップデート
他のView Controllerの1つで行われたリクエストのエラーを処理するためにBaseViewControllerを使用する場合、通知を設定できます。
BaseViewController
- (void)viewDidLoad
{
// ...
// Set observer for notification e.g. "requestFailedWith403Error"
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handle403Error:) name:@"requestFailedWith403Error" object:self];
}
- (void)handle403Error:(NSNotification)notification
{
// Code for handling the error
}
SubViewController
- (void)loginToServer
{
// ...
// Set authorization header
[[RKObjectManager sharedManager].HTTPClient setAuthorizationHeaderWithUsername:@"username" password:@"password"];
// e.g. POST to server
[[RKObjectManager sharedManager] postObject:yourObject
path:@"path/toserver"
parameters:nil
success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
// Handling success
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
// Handling error with notification
[[NSNotificationCenter defaultCenter] postNotificationName:@"requestFailedWith403Error" object:self];
}];
}
エラーの処理で中央構成を最適化するには、 RestKit Wiki (エラー マッピングが追加されている場所)にあるサンプル コードをもう一度見てください。