【问题标题】:How to retrieve array of users from Parse using array of ObjectIds?如何使用 ObjectIds 数组从 Parse 中检索用户数组?
【发布时间】:2015-04-23 21:16:35
【问题描述】:

所以我目前遇到了一个问题,我需要从我的 parse.com 数据库中检索一组用户。我有一个 objectIds 数组,我想查询这些数组以获得这些结果。

我在互联网上到处搜索,不幸的是没有一个解决方案有效。

我尝试创建一个查询键“objectId”的 PFQuery,但由于某种原因这不起作用(对于任何对象类型)。

这个链接里还有一个建议:Suggestion Link On Parse Forums

我将我的 swift 代码设置为类似于此,但我只是从 parse 接收空白 PFUsers。我调试了一下,似乎我的 for 循环中没有一个“伙伴”对象是用 objectIds 创建的。如您所见,我什至尝试手动设置它们。

我不知道我是否要解决这个问题,或者我的语法是错误的。任何帮助,将不胜感激。谢谢!

func queryForPartners(partnerIds : [NSString])
{

    var query = PFQuery(className: "User")

    var tempArrayOfObjects : [PFObject] = []
    for partnerId in partnerIds
    {
        var partner: PFUser = PFUser.objectWithoutDataWithObjectId(partnerId as String)
        partner.objectId = partnerId as String
        tempArrayOfObjects.append(partner)
    }
    PFUser.fetchAllInBackground(tempArrayOfObjects, block: { (objects, error) -> Void in
        if error == nil {
            // The find succeeded.
            println("Successfully retrieved \(objects!.count) Users.")
            self.usersForCells.removeAll(keepCapacity: false)
            if let objects = objects as? [PFUser] {
                for object in objects {
                    self.usersForCells.append(object)
                }
            }

        } else {
            // Log details of the failure
            println("Error: \(error) \(error!.userInfo!)")
        }
    })
}

【问题讨论】:

  • 你如何测试他们是空白用户?是否返回任何错误?
  • 空白用户的意思是,当我单步调试调试器时,我会在“tempArrayOfObjects.append(partner)”这一行暂停,在我的 PFObject 中,我会查看其中的所有不同值对象,它们都没有任何值。特别是 objectId,我认为它是在创建对象时设置的,或者当我在上面的行手动设置时。
  • 你在对象上给objectForKey:打电话了吗?
  • 你能描述一下你的意思吗?我不熟悉该功能的工作原理。

标签: ios swift parse-platform


【解决方案1】:

首先简化您的用户查询。这将查询您的用户类:

var query = PFUser.query()

在您的查询中,对照您已存储的 partnerIds 数组检查“objectId”键。我假设 partnerIds 是一个字符串数组。这段代码基本上是在说:“检查你存储的每个用户。如果用户的 objectId 在 partnerIds 中,则返回它。”

query?.whereKey("objectId", containedIn: partnerIds)

运行您的查询:

query?.findObjectsInBackgroundWithBlock({ (NSArray objects, NSError error) -> Void in
        if error == nil {
            if let objects = objects {
                // Do something with your users
            }
        } else {
            println("An error occurred")
        }
    })

【讨论】:

    猜你喜欢
    • 2016-03-27
    • 1970-01-01
    • 1970-01-01
    • 2020-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-24
    相关资源
    最近更新 更多