2014-10-09 29 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