Swift Parse PFQuery没有显示“equalTo”或“contains”的结果

时间:2018-01-19 14:26:51

标签: swift mongodb parse-platform pfquery

我有一个问题似乎无法解决,也找不到答案。我正在使用 Parse 库在 Swift 中开发iOS应用程序。

我有一个 Mongo DB 通过 Heroku ,并且能够使用 Parse 向其写入数据,没有任何问题。现在我需要搜索(查询)数据存储区。我需要能够在名为“名称”的“列”中搜索任何名称,而不仅仅是确切的标题。

例如,“乘车票”是“乘车票:欧洲”的另一个名称。如果用户搜索“Ticket to Ride”,我需要在查询中显示。

现在,“whereKey contains”和“whereKey equalTo”都没有返回结果。

let gamesQuery = PFQuery(className: "games")
print ("Searching for \(gameTitle)")
gamesQuery.whereKey("name", contains: gameTitle)
gamesQuery.findObjectsInBackground(block: { (objects, error) in
    if error != nil {
       print (error as Any)
       return
    }
    print ("Count : \(objects!.count)")
    if let games = objects{
       for  game in games {
           if let gameName = game["name"] as? String {
               print ("Game name :\(gameName)")
           }
       } 
    }            
})

我放置了一些打印语句进行调试(并将删除它们,并且计数是否应该投入生产。

  • className“游戏”确实存在(我可以通过终端窗口或Robo 3T运行查询)。
  • key“name”是已经存储的游戏标题,例如“Uno”,“Ticket to Ride”或“Monopoly”
  • “name”已编入索引
  • 结果集始终为零(无论使用“equalTo”还是“contains”

这一定是我想念的简单事。在此先感谢

1 个答案:

答案 0 :(得分:0)

以这种方式尝试:

    let gamesQuery = PFQuery(className: "games")
    print ("Searching for \(gameTitle)")
    gamesQuery.whereKey("name", matchesRegex: gameTitle, modifiers: "i")
    gamesQuery.findObjectsInBackground(block: { (objects, error) in
        if error != nil {
            print (error as Any)
            return
        }
        print ("Count : \(objects!.count)")
        if let games = objects{
            for  game in games {
                if let gameName = game["name"] as? String {
                    print ("Game name :\(gameName)")
                }
            }

        }

    })

使用“i”修饰符可以忽略文本大小写,也许就是问题所在。