2015-03-02 37 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