2017-10-13 30 views
0

進出口工作我的第一火力地堡的應用[目的 - C]我想知道最快的方式來實現的領域,我一直在閱讀documentation搜索,我發現:如何在Firestore Objective c中進行搜索查詢?

我做一個參考文檔:

FIRQuery *capitalCities = 
     [[self.db collectionWithPath:@"cities"] queryWhereField:@"capital" isEqualTo:@YES]; 

然後他們展示如何使搜索查詢:

[citiesRef queryWhereField:@"name" isGreaterThanOrEqualTo:@"San Francisco"]; 

那是什麼我不明白,我實施了代碼,如果我派:

[citiesRef queryWhereField:@"name" isGreaterThanOrEqualTo:@"Kar"]; 

我得到的是(按降序排列):

2017-10-12 18:53:36.138[2697:663963] SearchREsult: { 
    nombre = "victoria "; 
} 
2017-10-12 18:53:36.138[2697:663963] SearchREsult: { 
    nombre = karlo; 
} 
2017-10-12 18:53:36.138[2697:663963] SearchREsult: { 
    nombre = "karla "; 
} 
2017-10-12 18:53:36.139[2697:663963] SearchREsult: { 
    nombre = "V\U00edctor"; 
} 
2017-10-12 18:53:36.142[2697:663963] SearchREsult: { 
    nombre = "Ra\U00fal"; 
} 
2017-10-12 18:53:36.143[2697:663963] SearchREsult: { 
    nombre = "Ra\U00fal"; 
} 
2017-10-12 18:53:36.144[2697:663963] SearchREsult: { 
nombre = Pepe; 
} 
2017-10-12 18:53:36.145[2697:663963] SearchREsult: { 
    nombre = "Mar\U00eda"; 
} 

所以第二和第三結果是正確的,但我得到更多的「垃圾」結果我不需要。

所以我的問題是isGreaterThanOrEqualToisLessThanOrEqualTo公司的FireStore方法如何處理字符串,如「舊金山」文檔例子,所以我知道如果我能做到一些API方法的簡單的搜索查詢或我將不得不實施Solution Alternatives Google提供更復雜的搜索。

謝謝。

回答

0

這聽起來像你正試圖獲得一系列的結果。在這種情況下,你需要兩個and。所以:

[[citiesRef queryWhereField:@"name" isGreaterThanOrEqualTo:@"Kar"] 
      queryWhereField:@"name" isLessThan:@"Kas"] 

這會給你的所有文件,其中name開始與Kar

+0

但是,在這種情況下,如果我從搜索欄搜索,我必須使用一種方法來管理此查詢,我必須手動使用whis嗎? (例如,讀取搜索字符串中的最後一個字母,並查找字母表中的下一個字母) –

+0

Ah ...一個常見的技巧是使用unicode中最後一個字符的後綴(例如, ' 「嘉\ uf8ff」'。請參閱Firebase實時數據庫的文檔頁面示例,您可以使用相同的技巧:https://firebase.google.com/docs/database/admin/retrieve-data#range-queries –

+0

對不起,但我仍然不明白,從objective-c中的 firebase示例中得到的結果是什麼? '[[usersReference queryWhereField:@「nombre」isGreaterThanOrEqualTo:stringToSearch] queryWhereField:@「nombre」isLessThan:[NSString stringWithFormat:@「%@ \ uf8ff」,stringToSearch]];'' –