Мне нужно, чтобы мой код был скомпилирован в последовательности
Недавно я столкнулся с проблемой при разработке xcode.
Эта проблема:
Это UIButton, который показывает True или False логическое значение после "Touch up inside". Сначала я получу неправильный логический результат и сразу после второго клика верный результат.
Мой взгляд:
Я выяснил причину этого, то есть "порядок, в котором Xcode компилирует код". Я пытался разместить сообщения NSLog в стороне кода сверху вниз с сообщениями числовой последовательности. И все эти сообщения NSLog, которые вышли после компиляции, похожи на 1->2->4>3. PS: я бы хотел, чтобы это было 1->2->3->4.
Я попробовал NSLocks, но это не сработало так, как хотелось бы. И я также проверял с NSLog, что сообщения от PHP верны каждый раз, когда я запрашивал его. Ниже приведен код, который выводит логическое значение:
#import "SignUpVC.h"
#import "AFHTTPClient.h"
@interface SignUpVC ()
@end
@implementation SignUpVC
@synthesize userNameSU, userNameNotification, userPasswordSU,
userPasswordNotification, userPasswordVerify, passwordVerifyNotification,
userEmailSU, userEmailNotification, userGender, userPurpose, JSONArray;
- (void)viewDidLoad {
[super viewDidLoad];
}
- (IBAction)signUp:(id)sender {
//A variable whose value is from userName textField.
NSString *userName = userNameSU.text;
//Verify account is the inputed account exists in database
if( !([self validateAccountDuplication:userName]) ) {
NSLog(@"This account name had already existed");
}
else {
NSLog(@"You may use this account:)");
}
} //end of button method.
- (BOOL) validateAccountDuplication:(NSString *)candidate {
//Verify Duplication.
NSURL *url = [NSURL URLWithString:@"http://140.127.220.79"];
NSDictionary *postContent = [NSDictionary dictionaryWithObjectsAndKeys:candidate, @"account", nil];
AFHTTPClient *client = [AFHTTPClient clientWithBaseURL:url];
[client postPath:@"signInAccountCheck.php" parameters:postContent
success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"Successfully connected and data-passed to PHP, from validate account method.");
NSString *response = [[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding];
NSLog(@"From validate account method.----response:%@",response);
JSONArray = [NSJSONSerialization JSONObjectWithData:responseObject options:kNilOptions error:nil];
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Failed to connected to PHP, from MainVC");
}
];
return [[[JSONArray objectAtIndex:0] objectForKey:@"result"] isEqualToString:@"UNDUPLICATED"];
}
Выход:
(Я получил первые 3 строки, когда я впервые нажал кнопку, и во второй раз, когда я нажал кнопку, я получил следующие 3 строки. (Ввод textField пуст, который должен иметь вывод: [{"result":"UNDUPLICATED"}], что правильно. Но обратите внимание на первую строку результата двух разделов. Он вывел неправильный результат....
(результат первого нажатия на кнопку)
2014-07-30 Это имя аккаунта уже существовало
2014-07-30 Успешное подключение и передача данных в PHP из метода проверки учетной записи.
2014-07-30 Из метода проверки учетной записи.---- ответ: [{"result": "UNDUPLICATED"}]
(результат второго нажатия на кнопку)
2014-07-30 Вы можете использовать этот аккаунт:)
2014-07-30 Успешное подключение и передача данных в PHP из метода проверки учетной записи.
2014-07-30 Из метода проверки учетной записи.---- ответ: [{"result": "UNDUPLICATED"}]
Спасибо всем заранее за ответ.:)
С уважением,
Бен