У меня проблема с управлением между приложением и SDK для функции. Мое приложение разделено на две части: SDK и приложение. это мой класс для "sdk":
- (void)statusCheckPin: (User *)pinUser
card: (Card *)pinCard
viewController: (UIViewController *) viewController
delegate: (id<LoyaltyCardsSDKCompleteDelegate>)delegate{
self.delegate = delegate;
SDKHandler* sdkHandler = [[SDKHandler alloc] initWithUserId:pinUser.userId fiscalCode:nil sessionToken:pinUser.sessionToken];
[sdkHandler doStatusCheckPin:pinUser.userId card:pinCard.pan viewController:viewController
success:^(StatusCheckPinResponse* changePin) {
Result<StatusCheckPinResponse *> *response = [[Result<StatusCheckPinResponse*> alloc] initWithStatusCode:MOBILE_GENERIC_ERROR_MSG andResponse:changePin];
[self callDelegateForCommand:CMD_CHANGE_PIN WithResponse:response];
} failure:^(Result *failureResult) {
[self callDelegateForCommand:CMD_CHANGE_PIN WithResponse:failureResult];
}];
PRLog(@"SDK> Received cmd: STATUS CHECK PIN");
}
- (void) doStatusCheckPin: (NSString *) pinUser card: (NSString *) pinCard viewController: (UIViewController *) viewController success:(successSDKType)success failure:(failureSDKType)failure{
self.mcCardEnrollmentSuccessCallback = success;
self.mcCardEnrollmentFailureCallback = failure;
self.user = [[User alloc ]init];
self.card = [[Card alloc ]init];
// self.testViewController = [[TestViewController alloc] init];
self.testViewController = [[TestViewController alloc] initWithNibName:@"TestViewController" bundle:[NSBundle bundleForClass:[TestViewController class]]];
if([self.testViewController.panPersonalTextField isEqual: @"0"] ||
[self.testViewController.panPersonalTextField isEqual: @"1"] ||
[self.testViewController.panPersonalTextField isEqual: @"2"] ||
[self.testViewController.panPersonalTextField isEqual: @"3"] ||
[self.testViewController.panPersonalTextField isEqual: @"4"] ||
[self.testViewController.panPersonalTextField isEqual: @"5"]){
StatusCheckPinResponse *statusCheckPin = [[StatusCheckPinResponse alloc] init];
[statusCheckPin setErrorCase:@"NOT_ENROLLED"];
Result *errore = [[Result alloc] initWithStatusCode:@"2" andResponse:statusCheckPin];
self.mcCardEnrollmentFailureCallback(errore);
} else if ([self.testViewController.panPersonalTextField isEqual: @"6"] ||
[self.testViewController.panPersonalTextField isEqual: @"7"] ||
[self.testViewController.panPersonalTextField isEqual: @"8"] ||
[self.testViewController.panPersonalTextField isEqual: @"9"]){
StatusCheckPinResponse *statusCheckPin = [[StatusCheckPinResponse alloc] init];
[statusCheckPin setErrorCase:@"ENROLLED"];
Result *errore = [[Result alloc] initWithStatusCode:@"1" andResponse:statusCheckPin];
self.mcCardEnrollmentFailureCallback(errore);
}
}
, и это мое "приложение":
case CHECK_PIN:{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1.5 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
self.user = [[User alloc ]init];
self.card = [[Card alloc ]init];
self.user.userId = self.userIdPersonalTextField.text;
self.user.sessionToken = self.sessionTokenPersonalTextField.text;
self.user.fiscalCode = self.fiscalCodePersonalTextField.text;
self.user.phoneNumber = self.phoneNumberPersonalTextField.text;
self.user.callerApp = self.callerAppPersonalTextField.text;
self.card.pan = self.panPersonalTextField.text;
self.card.driverCode = self.driverCodePersonalTextField.text;
[self.loyaltySDK statusCheckPin:self.user card:self.card viewController:self delegate:self];
});
}
, основанное на числе, введенном в текстовом поле "pan", позвольте мне показать 2 или 3 разных ответов. Функция, которую я должен написать лучше, такова:
if([self.testViewController.panPersonalTextField isEqual: @"0"] ||
[self.testViewController.panPersonalTextField isEqual: @"1"] ||
[self.testViewController.panPersonalTextField isEqual: @"2"] ||
[self.testViewController.panPersonalTextField isEqual: @"3"] ||
[self.testViewController.panPersonalTextField isEqual: @"4"] ||
[self.testViewController.panPersonalTextField isEqual: @"5"]){
StatusCheckPinResponse *statusCheckPin = [[StatusCheckPinResponse alloc] init];
[statusCheckPin setErrorCase:@"NOT_ENROLLED"];
Result *errore = [[Result alloc] initWithStatusCode:@"2" andResponse:statusCheckPin];
self.mcCardEnrollmentFailureCallback(errore);
} else if ([self.testViewController.panPersonalTextField isEqual: @"6"] ||
[self.testViewController.panPersonalTextField isEqual: @"7"] ||
[self.testViewController.panPersonalTextField isEqual: @"8"] ||
[self.testViewController.panPersonalTextField isEqual: @"9"]){
StatusCheckPinResponse *statusCheckPin = [[StatusCheckPinResponse alloc] init];
[statusCheckPin setErrorCase:@"ENROLLED"];
Result *errore = [[Result alloc] initWithStatusCode:@"1" andResponse:statusCheckPin];
self.mcCardEnrollmentFailureCallback(errore);
}
, которая, по правде говоря, вообще не работает, потому что она всегда получает нулевое текстовое поле, несмотря на добавление пользователя в число ..