【问题标题】:Swift Parse PFQuery is showing no results with "equalTo" or "contains"Swift Parse PFQuery 没有显示“equalTo”或“contains”的结果
【发布时间】:2018-01-19 14:26:51
【问题描述】:

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

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

例如,“Ticket to Ride”是一个名称,而“Ticket to Ride: Europe”是另一个名称。如果用户搜索“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)")
           }
       } 
    }            
})

我放置了一些 Print 语句以进行调试(并且将删除它们以及 count 如果这会投入生产。

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

这一定是我想念的简单东西。提前致谢

【问题讨论】:

    标签: swift mongodb parse-platform pfquery


    【解决方案1】:

    试试这个方法:

        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”修饰符忽略文本大小写,这可能是问题所在。

    【讨论】:

    • 不,但感谢您的尝试。我试过了,得到了相同的“零计数”结果。自发布此消息以来,我试图仅获取具有已知值对“minPlayers = 2”的第一个对象,即使这样也没有得到结果。虽然我会回去查看配置,但其他功能(创建用户、createGame.save 和其他有权访问数据库的功能都在工作。即使登录也有效,所以我知道我可以从数据库中读取数据。
    • 已解决:我花了整个周末的时间来处理这个问题。我调试/打印了各种对象,扩展了日志等,但找不到任何错误。我更改了“className”/Object/Collection 并能够写入该表,但仍无法从中读取。最后,我删除了云实例并重新创建了它。在没有更改代码的情况下,它开始工作,我能够从我的数据库中写入和读取(和删除)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多