2015-09-13 41 views
0

我解析後端基於應用程序,終止,如果不合作到互聯網,與錯誤NSInvalidArgumentException',原因:'不能做類型爲(null)的比較查詢。當有互聯網連接時,一切工作正常,但是當我失去知覺,然後幾秒鐘後,應用程序終止該錯誤。解析iOS:NSInvalidArgumentException',原因:'無法做類型比較查詢:(null)

這裏我們我的代碼

- (void)queryParseMethod { 
NSLog(@"start query"); 


PFQuery *query = [UserParseHelper query]; 
[query whereKey:@"username" notEqualTo:self.mainUser.username]; 
PFGeoPoint *userGeoPoint = self.mainUser.geoPoint; 
[query whereKey:@"geoPoint" nearGeoPoint:userGeoPoint]; 

if (self.segmentedControl.selectedSegmentIndex == 0) { 
    [query whereKey:@"isMale" equalTo:@"true"]; 

} 
if (self.segmentedControl.selectedSegmentIndex== 1) { 
    [query whereKey:@"isMale" equalTo:@"false"]; 

} 


PFUser *chekUser = [PFUser currentUser]; 
NSString *vip = chekUser[@"membervip"]; 
if ([vip isEqualToString:@"vip"]) { 

    NSLog(@"Unlim - vip member"); 
    self.upgradeVip.hidden = YES; 
    self.upgradedVip.hidden = NO; 

} else{ 

    NSLog(@"No Unlim - no vip member"); 
// query.limit = limitQueruNoVipUser; 
    self.upgradeVip.hidden = NO; 
    self.upgradedVip.hidden = YES; 

} 

[query whereKey:@"geoPoint" nearGeoPoint:self.mainUser.geoPoint withinKilometers:self.mainUser.distance.doubleValue]; 

回答

0

請添加一些無校驗碼,以確保您傳遞給查詢的時刻是不是零。我想這個問題是因爲PFGeoPoint類需要聯網才能獲得當前位置,所以如果沒有聯網就無法正確實例化。

+0

我也在想,但如果我緩存PFGeoPoint結果會發生什麼? 或有辦法讓應用程序警告沒有互聯網連接,不要突然終止 –

+0

對不起,我遲到的答覆。我記得,PFGeoPoint可以通過核心位置的位置來實例化。因此,如果您已檢查網絡服務似乎已停用,則可以調用核心位置服務並將當前位置作爲替代選項。獲取CLLocation或某些內容後,可以手動實例化PFGeoPoint對象,然後執行其他操作。但實際上,當沒有網絡時,您無法獲取查詢,那麼爲什麼您仍然希望在這種情況下獲得GeoPoint? – MatthewLuiHK