我正在使用Parse为我的应用添加离线支持,并且他们的saveEventually
和deleteEventually
很糟糕而且效果不佳,我需要手动管理。哪个对我好。
无论如何,我已经做到这一点,所以我将带有名称的对象固定到要删除的名称。如果我在重新联机时固定要删除的对象,我仍然希望将其隐藏在当前结果中,因为它将被删除。
那么我该如何制作PFQuery
,以便在针名不等于我的deletePinName
群时不会获取结果。
所以我想要获取除固定被删除的所有内容。
修改
我找到了一种解决这个问题的潜在方法,但它看起来似乎并不是因为我无法解决的问题。
我简单地创建另一个查询,该查询将所有固定的对象删除,然后使我的主查询不包括这些结果。
PFQuery *mainQuery = [PFQuery queryWithClassName:@"Box"];
PFQuery *subQuery = [PFQuery queryWithClassName:@"Box"];
[subQuery fromPinWithName:@"DeleteTheseObjectsPin"];
[mainQuery whereKey:@"objectId" doesNotMatchKey:@"objectId" inQuery:subQuery];
有意义吗?获取与此子查询中的对象不匹配的对象,这意味着我固定要删除的对象。
那么为什么当我将这个whereKey
约束添加到我的主查询中时,我得到的结果为零?
答案 0 :(得分:0)
对于您的用例,我不认为使用具有复杂约束的PFQuery来过滤固定对象是一个很好的策略。您只需要执行普通的PFQuery即可从Parse获取所需的任何对象,并在将返回的数据呈现给用户之前,使用您的引脚列表在本地过滤它们。对于要删除的引脚对象,可以从PFQuery结果中过滤掉它们;要保存pin对象,可以将本地副本添加到PFQuery结果中。为了使引脚列表变小,在每个应用程序启动期间,您可以触发后台线程以检查任何引脚对象是否在Parse上,具体取决于它是删除引脚还是保存的引脚,您可以保留它或从引脚列表中删除它基于Parse查询结果。