2015-12-13 22 views
1

當我打電話refreshResults("test")所有的搜索結果仍然顯示,而不是隻包含「測試」在解析BUSINESS_NAME列的人。我使用過濾器時打印的數組包含數據,但數據不正確。具有過濾搜索,無法正常工作 - 解析,斯威夫特

這樣做的目標是一個簡單的搜索 - 這是返回包含過濾器的所有結果。例如:搜索「face」會返回face,facebook,faces,faces等,因爲這些結果都包含過濾器「face」。我將過濾器與business_name字段進行比較,以查看是否有任何過濾器返回匹配項。

的is_person值始終是假的,因爲我在尋找商家,而不是人。

下面是代碼:

func refreshResults(strFilter: String) { 
    let progressIndicator = MBProgressHUD.showHUDAddedTo(self.view, animated: true) 
    progressIndicator.labelText = "Loading..." 

    resultsCompEmailArray.removeAll(keepCapacity: false) 
    resultsCompNameArray.removeAll(keepCapacity: false) 
    resultsCompProfilePicArray.removeAll(keepCapacity: false) 

    if (!strFilter.isEmpty) { 
     print("searching with filter: ", strFilter) 

     let q1 = PFQuery(className: "_User") 
     q1.whereKey("is_person", equalTo: false) 
     let q2 = PFQuery(className: "_User") 
     q2.whereKey("business_name", containsString: strFilter) 
     let otherQuery = PFQuery.orQueryWithSubqueries([q2, q1]) 

     otherQuery.findObjectsInBackgroundWithBlock({ (objects: [PFObject]?, error:NSError?) -> Void in 
      MBProgressHUD.hideAllHUDsForView(self.view, animated: true) 
      if (error == nil) { 
       for obj in objects! { 
        self.resultsCompNameArray.append(obj.objectForKey("business_name") as! String) 
        self.resultsCompEmailArray.append(obj.objectForKey("username") as! String) 
        if let profilePic = obj.objectForKey("profile_picture") as? PFFile { 
         self.resultsCompProfilePicArray.append(profilePic) 
        } 
        self.resultsTable.reloadData() 
        print(self.resultsCompNameArray) 
       } 
      } 
     }) 
    } 
} 

知道的任何有用的註釋,保存別人的愚蠢。謝謝。

+0

所以,你不想用'is_person = FALSE'的數據,這並不都在filtred'business_name',對不對? – adolfosrs

+0

我需要搜索結果才能顯示任何business_name,只要它在搜索過濾器中。例如:搜索fo返回foo,foos,food,fodey,因爲它們都包含fo。 is_person部分將永遠是虛假的,因爲我在我的數據庫中搜索業務而不是個人 - 這就是我將它們分開的方式。 - 所有這些都與簡單的Google搜索非常相似,所有包含搜索條件的結果都會彈出。 – user3892791

回答

0

問題是您正在對您的查詢執行「或」操作。因此,您正在檢索具有is_person == false或包含已過濾字符串的數據。因此,您的結果可能包含不適合篩選器的對象,但is_person標誌爲false。

要解決這一點,你可以做到以下幾點:

let query = PFQuery(className: "_User") 
     query.whereKey("is_person", equalTo: false) 
     query.whereKey("business_name", containsString: strFilter) 

     query.findObjectsInBackgroundWithBlock({ (objects: [PFObject]?, error:NSError?) -> Void in 
      MBProgressHUD.hideAllHUDsForView(self.view, animated: true) 
      if (error == nil) { 
       for obj in objects! { 
        self.resultsCompNameArray.append(obj.objectForKey("business_name") as! String) 
        self.resultsCompEmailArray.append(obj.objectForKey("username") as! String) 
        if let profilePic = obj.objectForKey("profile_picture") as? PFFile { 
         self.resultsCompProfilePicArray.append(profilePic) 
        } 
        self.resultsTable.reloadData() 
        print(self.resultsCompNameArray) 
       } 
      } 
     }) 
+0

你好,感謝你的反饋。這很有幫助。我已經發布了我的答案,所有人都可以看到。 – user3892791