2015-03-02 40 views
0

我需要对parse.com运行SYNCHRONOUS调用。这是我得到的:Parse.com findObjects()获取数据

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 

获得姓氏,但不是同步阵列的情况下。在那里我不能直接询问价值(或者看起来如此)。

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

+0

在这种情况下使用'self.arrayCurrentData [i] .lastName'应该可以工作。你有错误吗?请提供更多信息。 – 2015-03-03 17:54:51

回答

0

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

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

编辑 - 因为你已经输入的响应,Array<myData>这种方法生成编译器的消息。但找到退货PFObjects,所以...

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

...是正确的演员。我不是一个快速的演讲者,但表达self.arrayCurrentData[i].lastName取悦编译器,因为arrayCurrentData[i]键入为myData。但是这在运行时失败了,因为实际返回的对象是PFObjects。

另外,我会仔细看看同步获取的基本原理。我不能想到在主线程中有一个好主意的情况。 (关闭主要好,但是你已经选择了异步与主,并且基于块的方法提供了封装后取逻辑的好方法)。

+0

感谢您的回答,但我已经尝试过。当我尝试self.arrayCurrentData [i] .valueForKey(“lastName”)时发生错误:'找不到成员valueForKey'。 – TommyF 2015-03-03 16:18:22

+0

@TommyF - 查看编辑 – danh 2015-03-03 16:45:55

+0

而他的名字是BINGO!非常感谢您的帮助danh! – TommyF 2015-03-03 21:30:53