2014-10-09 41 views
0

我想知道當您使用getData()或任何背景等價物時,Parse如何加載PFFile數據。這是我的情況:PFFile加載行爲

我有一個User類與密鑰profilePic,這是一個PFFile,在這種情況下,一個.JPG圖像。當我加載我的用戶時,我想將他的個人資料圖片顯示爲UIImageView。下面的代碼我使用:

let imageFile = user["profilePic"] as PFFile 
let imageData = imageFile.getData() 
let image = UIImage(data: imageData) 

我然後繼續設置imageUIImageViewUITableViewCell

正如你所看到的,我使用的是getData()而不是,我會在完成塊中設置image

事情是,我得到一個警告,我阻止了主線程,但是當我快速滾動我的表時,我發現絕對沒有任何延遲,因此經常觸發getData()。我還看到狀態欄中沒有網絡指示符,這表明它正在從解析中反覆拉取圖像文件。

總之,我的問題是這樣的:在加載用戶時,如何解析加載我的圖像文件?它獲取所有用戶信息並將其存儲在緩存中時是否下載圖像文件?或者它只是加載文件的引用,然後在我致電getData()時下載文件?

在此先感謝。

回答

0

解析下載對圖像文件的引用,當您調用getData()時,它下載文件的內容。當你的查詢被調用時,所有的引用被保存(作爲一個查詢計數)。然後,每次調用getData()時,它都會被視爲另一個API請求,因爲它需要到服務器並下載下載的引用的內容。 Source

如果您的網絡連接速度較慢,當您在主線程中調用getData()時,可能會發現問題。

getData()從緩存中獲取數據(如果可用)或從分析服務器獲取其內容。

+0

謝謝你的回答。如果我多次在同一個文件上調用'getData()',它會每次從服務器下載文件,還是從緩存中加載? – 2014-10-09 18:05:15

+0

它從緩存中加載它。我更新了我的答案。 – Dehli 2014-10-09 18:07:44

+0

謝謝!我接受了你的答案。 – 2014-10-09 20:48:01