Parse.com findObjects()获取数据

时间:2015-03-02 18:21:49

标签: ios parse-platform synchronous pfquery

我需要对parse.com运行SYNCHRONOUS调用。这就是我得到的:

var query = PFQuery(className:"myClass")
    query.whereKey("groupClassId", equalTo:self.currentGroupId)
    query.selectKeys(["objectId", "firstName", "lastName"])
    self.arrayCurrentData = query.findObjects() as Array<myData>

这将从parse.com返回正确的行数并填满我的本地数组。但是如何从数组中提取数据呢?如果我在运行时查看数组,它会显示我需要的所有数据都在self.arrayCurrentData中的'serverData'中。

通常如果我循环一个异步(findObjectsInBackgroundWithBlock)填充数组我会问

self.arrayCurrentData[i].lastName

获取lastName,但同步数组不是这种情况。在那里,我不能直接询问价值(或者看起来如此)。

有谁知道我在说什么以及如何从parse.com获取数据同步?

1 个答案:

答案 0 :(得分:1)

使用valueForKey()获取PFObject的属性。无论对象是否同步获取,都是如此。换句话说......

self.arrayCurrentData[i].valueForKey("lastName")

编辑 - 此方法会生成编译器消息,因为您已将响应键入为Array<myData>。但是find返回PFObjects,所以......

self.arrayCurrentData = query.findObjects() as [PFObject]

...是正确的演员。我不是一个快速发言者,但表达式self.arrayCurrentData[i].lastName使编译器满意,因为arrayCurrentData[i]被输入为myData。但是这在运行时失败了,因为真正的返回对象是PFObjects。

顺便说一句,我会仔细研究同步获取的理由。我无法想到一个主线程上的好主意。 (主要没关系,但是你已经选择了asynch与main相比,基于块的方法提供了一种封装后取逻辑的好方法。)