我需要对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获取数据同步?
答案 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相比,基于块的方法提供了一种封装后取逻辑的好方法。)