Parse.com findObjects() 获取数据

Parse.com findObjects() get data

我需要 运行 同步调用 parse.com。这是我得到的:

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

这 return 来自 parse.com 的正确行数并填满了我的本地数组。但是我怎样才能从数组中提取数据呢?如果我在 运行 时间查看数组,它显示我需要的所有数据都在 self.arrayCurrentData 中的 'serverData' 中。

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

self.arrayCurrentData[i].lastName

获取lastName,但是在sync数组中不是这样。在那里我不能直接询问值(或者看起来是这样)。

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

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

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

EDIT - 这种方法会生成一条编译器消息,因为您将响应键入 Array<myData>。但是找到returns个PFObjects,所以...

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

... 是正确的演员表。我不是 swift 演讲者,但表达式 self.arrayCurrentData[i].lastName 令编译器满意,因为 arrayCurrentData[i] 被键入为 myData。但这在 运行 时失败了,因为真正返回的对象是 PFObjects。

顺便说一句,我会认真研究同步获取的基本原理。我想不出在主线程上是个好主意的情况。 (关闭 main 没问题,但是你已经选择了异步 vs. main,基于块的方法提供了一种封装 post-fetch 逻辑的好方法)。