SituationNSInvalidArgumentException, ne peut pas faire une requête de comparaison pour le type: (null)
Je suis en train de changer un projet Objective-C de Parse à Firebase. Ce que j'essaie de faire est de remplacer les codes Parse par le code Firebase correspondant. Cette stratégie a fonctionné pour ma page de connexion et la connexion a été réussie La page de connexion appelle une section à MainViewController. Les charges MainViewController mais les application se bloque avec une error
application Mettre fin à cause de l'exception non interceptée 'NSInvalidArgumentException', la raison: 'Impossible faire une requête de comparaison pour le type: (null)'
Ce que je est-ce que
This est le code firebase j'ai ajouté dans LoginViewController - (IBAction)loginButtonClicked:(id)sender
//Checking for username and password
_emailId=_emailTextField.text;
_password=_passwordTextField.text;
//reference for firebase
self.ref = [[FIRDatabase database] reference];
if([self isInternet])
{
//firebase authentication
[[FIRAuth auth]signInWithEmail:_emailId password:_password completion:^(FIRUser *user, NSError *error) {
// ...
if (error) {
//login failed
[self failsLoginWithError:@"Please try again later"];
}
else
{
NSLog(@"Login Successful");
[self successLoginWithResposne:user];
}
et this est le code d'analyse syntaxique j'ai commenté
PFQuery *query=[PFQuery queryWithClassName:@"normal"];
[query whereKey:@"usermail" equalTo:_emailId];
[query whereKey:@"password" equalTo:_password];
[query whereKey:@"user_removed" equalTo:@(0)];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (error) {
//login failed
[self failsLoginWithError:@"Please try again later"];
}
if ([objects count]==0) {
NSLog(@"Invalid username or passowrd");
[self failsLoginWithError:@"Invalid email or password"];
} else {
PFObject *obj = [objects firstObject];
ud = [NSUserDefaults standardUserDefaults];
BOOL isBlocked = [[obj valueForKey:@"blocked"] boolValue];
BOOL isLogged = [[obj valueForKey:@"logged"]boolValue];
NSString *userID = [ud objectForKey:@"ObjectID"];
if (isLogged) {
if ([userID isEqualToString:obj.objectId]) {
if (isBlocked) {
[self failsLoginWithError:@"Login Blocked! Please contact your Doctor"];
}else{
// Login success
[self successLoginWithResposne:obj];
}
}
else{
// login Failed
[obj setValue:@(1) forKey:@"blocked"];
[obj saveInBackground];
[self failsLoginWithError:@"Login Blocked! Please contact your Doctor"];
}
}
else {
// login success
[obj setValue:@(1) forKey:@"logged"];
[obj saveInBackground];
[self successLoginWithResposne:obj];
}
}
} ];
Le message d'erreur "exception due à la comparaison avec une valeur nulle". Supposons que cela soit dû à un code d'analyse quelque part comparant une valeur reçue de LoginViewController (que j'ai commentée).
Question
Comment résoudre ce problème? Comment trouver la partie où se déroule la comparaison? Dois-je remplacer chaque code d'analyse par du code Firebase avant de l'exécuter? si oui, comment trouver chaque code d'analyse dans le projet?
Crash Report:
ligne exact où les accidents de code:
L'a corrigé. Ce n'était pas à cause de l'analyse. Le 'NSUserDefaults' ne fonctionnait pas correctement. Merci pour votre temps. –