【问题标题】:Check if Parse.com column Array contains current username检查 Parse.com 列数组是否包含当前用户名
【发布时间】:2015-10-20 10:38:53
【问题描述】:

我正在尝试检查 parse 中的数组是否包含当前用户的用户名:

var thisUser = PFUser.currentUser()?.username

查询:

var query = PFQuery(className: "currentUploads")
            query.whereKey("reportedBy", containsString: self.thisUser)
            query.findObjectsInBackgroundWithBlock({ (object: [AnyObject]?, error: NSError?) -> Void in
                if (error == nil){
                    // Success fetching user in reportedBy field
                    println("User found")
                }
                else
                {
                    println(error)
                    println("User NOT found")
                }
            })

它给了我错误:

[错误]:$regex 仅适用于字符串字段(代码:102,版本: 1.8.0) 可选(错误域=解析代码=102“$regex 仅适用于字符串字段”用户信息=0x7fba6a5b7610 {代码=102,临时=0, error=$regex 仅适用于字符串字段, NSLocalizedDescription=$regex 仅适用于字符串字段}) 用户不是 找到了

有什么建议吗?

【问题讨论】:

    标签: xcode swift parse-platform


    【解决方案1】:

    您必须使用equalTo 而不是containsString。正如错误所说,containsString 仅适用于字符串,不适用于数组:

    query.whereKey("reportedBy", equalTo: self.thisUser)
    

    名称具有误导性,但 equalTo 检查所有数组元素是否与您的字符串相等。

    【讨论】:

    • 我自己试过了,它只是给我“找到用户”,但该列是空的:s9.postimg.org/ikrw0buwf/Screen_Shot_2015_10_20_at_12_54_23.png - 那怎么可能,当我要检查列是否包含当前用户名?
    • 你确定你有当前用户吗?
    • 是的,因为如果我这样做:println(PFUser.currentUser()?.username) 我得到输出:x8CKAPH4SUhypWW6fBiQHuDHL - 并且它是当前用户名。
    • 您检查过实际返回的内容吗? [AnyObject]? 的值是多少?
    • @ØyvindHauge - 很奇怪。当我运行println(object) 时,我得到Optional([]) 作为输出..
    【解决方案2】:

    鉴于您应该使用equalTo 而不是containsStringIt,因此您得到一个空对象并不奇怪。如果您的用户名不在任何数组中,那应该是正确的。我想你相信如果没有找到记录,你应该得到一个错误,但事实并非如此。如果没有找到,您只需返回一个空对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-09
      • 1970-01-01
      • 2019-08-10
      • 2021-05-27
      • 2018-02-18
      • 2011-04-23
      • 2020-10-10
      • 2016-10-13
      相关资源
      最近更新 更多