如何使用 ObjectIds 数组从 Parse 中检索用户数组?
Posted
技术标签:
【中文标题】如何使用 ObjectIds 数组从 Parse 中检索用户数组?【英文标题】:How to retrieve array of users from Parse using array of ObjectIds? 【发布时间】: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:
打电话了吗?
你能描述一下你的意思吗?我不熟悉该功能的工作原理。
【参考方案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")
)
【讨论】:
以上是关于如何使用 ObjectIds 数组从 Parse 中检索用户数组?的主要内容,如果未能解决你的问题,请参考以下文章
Mongoose Populate 不适用于 ObjectIds 数组