NSError の使い方

呼ばれる側

+ (BOOL)testMethod error:(NSError**)error{

    __block NSError*  responsError = nil;
    __block NSInteger httpStatus = 0;

    NSURLSessionDataTask* task = [session dataTaskWithRequest:request
                                            completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
    
        responsError =error;
        httpStatus = ((NSHTTPURLResponse* )response).statusCode;
    }];


    if (responsError){
        *error =responsError;
        return NO;
        
    }else  if (httpStatus == 200){
        error=nil;
        return YES;
    }else{
        NSDictionary *errorUserInfo = @{NSLocalizedDescriptionKey: @"upLoadで失敗しました",
                                        NSLocalizedFailureReasonErrorKey: @"HTTPコードが200以外"};
        
        *error = [[NSError alloc] initWithDomain:@"testMethod" code:httpStatus userInfo:errorUserInfo];
        return NO;
    }

}

呼ぶ側

   NSError* error = nil;
 
   BOOL rtn =  [testMethod error:&error];
   
    if (! rtn) {
        NSLog(@"%@",error);
        NSLog(@"%@",error.localizedDescription);
        NSLog(@"%@",error.localizedFailureReason);
    } 

 

NSLocalizedDescriptionKey で設定した内容は、error.localizedDescriptionで取得できる。

NSLocalizedFailureReasonErrorKey で設定した内容は、error.localizedFailureReason で取得できる。