Parse platform 如何在没有警告的情况下直接从PFFile获取数据

Parse platform 如何在没有警告的情况下直接从PFFile获取数据,parse-platform,pffile,Parse Platform,Pffile,我使用PFFile来存储图像。如果图像已经下载,我想直接访问它。如果没有,我想使用后台方法。但是,如果我使用getData,我会得到以下警告: Warning: A long-running operation is being executed on the main thread. Break on warnBlockingOperationOnMainThread() to debug. 因为我知道数据是可用的,所以这个警告是不必要的,会弄乱我的日志。有没有办法在不触发警告的情况下访

我使用PFFile来存储图像。如果图像已经下载,我想直接访问它。如果没有,我想使用后台方法。但是,如果我使用
getData
,我会得到以下警告:

Warning: A long-running operation is being executed on the main thread. 
 Break on warnBlockingOperationOnMainThread() to debug.

因为我知道数据是可用的,所以这个警告是不必要的,会弄乱我的日志。有没有办法在不触发警告的情况下访问PFFile的数据?

您会收到警告,因为数据在本地不可用,而getData是从服务器获取数据的同步调用。当调用getData时,它会阻塞主线程(UI),并停止所有应用程序交互,直到数据下载,这就是为什么会出现错误。通常,阻止用户界面进行后台操作(如下载)是非常不可取的

我将使用PFFile的
isDataAvailable
属性检查数据是否在本地可用。如果不是,请使用
getDataInBackgroundithBlock:
在后台获取数据。您可以使用该调用提供的完成方法来更新imageView


更新-您还可以将
getData
调用包装在
dispatch\u async
块中,这将把操作移动到另一个线程,从而将其从主线程中删除并消除警告。

Hi,感谢您的回答。但是,我已经在检查isDataAvailable,我可以看到getData的调用实际上没有使用网络。因此,正如我在上面已经解释过的:我得到了这个警告,即使它是不必要的。我仍然会使用
getDataInBackground
。这是做你正在做的事情的标准方法。异步加载映像将提高性能,即使数据是在本地缓存的。或者,将每个
getData
调用包装在一个dispatch\u async块中。无论哪种方式,警告都不会消失,直到您取消主线程的调用。我也希望使用getDataInBackground。然而,在这种特殊情况下,我不能:我使用pffile下载图像,并在某个时候显示它们。因为我使用了一个框架来显示,所以我不能使用Parse的PFImage。如果使用getDataInBackground,则在实际显示图像之前会出现明显的闪烁。我可以围绕PFFile构建一个小的缓存,但这似乎很愚蠢,因为Parse已经为我做了缓存——因此我的问题是,我尝试了dispatch_async,它可以工作。您是否介意编辑您的答案并在此处提及dispatch_async,以便我可以接受它作为正确答案?谢谢