我正在查询新闻Feed的项目,通常查询会很好(以毫秒为单位),并且我的新闻Feed会正常填充。其他时候,它会冻结应用程序而不会返回任何内容。
在模拟器中,当查询触发时,网络指示器将无休止地旋转并使用断点,我看到查询永远不会返回(使用findObjectsInBackground
)。此时Xcode本身不显示任何网络活动,只是模拟器中的旋转网络指示器。最奇怪的是,大约50%的时间它完成得很好。我的代码如下:
PFQuery *query = [Item query];
[query includeKey:@"place"];
[query includeKey:@"place.createdBy"];
[query includeKey:@"owner"];
[query whereKeyDoesNotExist:@"userDeleted"];
[query orderByDescending:@"createdAt"];
[query setLimit:20];
// self.newsFeedItems = [query findObjects];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (objects) {
self.newsFeedItems = objects;
if (completionHandler) {completionHandler(nil);}
}
}];
Item
是PFObject的子类,我在我的应用程序中的几个地方查询并保存这些没问题。 place
是指向不同类的指针,place.createdBy
是place对象上的User对象。这看起来像一个非常简单的查询,只有20个项目。我使用同步调用来查看是否报告了任何其他信息,但是当它冻结时它只会锁定应用程序。
如果您发现我的查询有问题,请提供任何帮助。谢谢。这是一个带有完成处理程序的方法,因此是completionHandler行。
答案 0 :(得分:0)
我从未弄清楚发生了什么,但我的解决方案是仅在返回News Feed查询后触发我的Messages查询(另一个类)。到目前为止,该应用程序通过此设置激发了我的查询。我的项目集合查询仍然可以异步触发而不会出现问题。不知何故,我的News Feed和Messages查询相互交互(可能在后端)。
PS。有关此问题的讨论,请参阅评论。