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 で取得できる。