形勢NSInvalidArgumentException,不能對類型比較查詢:(空)
我想從解析更改Objective-C的項目火力地堡。我想要做的是用相應的firebase代碼替換Parse代碼。此策略適用於我的登錄頁面並且登錄成功 登錄頁面將調用segue到MainViewController。該MainViewController負載,但應用程序崩潰與error
終止應用程序由於未捕獲的異常「NSInvalidArgumentException」,理由是:「不能對類型比較查詢:(null)的
我難道
This是火力點代碼,我在LoginViewController - (IBAction)loginButtonClicked:(id)sender
和this是解析代碼我註釋掉
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];
}
}
} ];
該錯誤消息表示「異常由於與空值的比較」。 猜測這是由於某些解析代碼比較了從LoginViewController(我註釋掉)收到的值。
問題
如何解決這一問題? 如何找到進行比較的部分? 執行前必須用firebase代碼替換每個解析代碼嗎? 如果是這樣,如何找到項目中的每個解析代碼?
崩潰報告:
精確所在行代碼崩潰:
修正了它。這不是因爲解析。 'NSUserDefaults'工作不正常。謝謝你的時間。 –