我有以下代码从我的Parse表中检索所有新的“Departments”...
首次在设备上运行应用程序时,我创建了去年的日期。
NSDate *now = [NSDate date];
NSDateComponents *days = [NSDateComponents new];
[days setDay:-365];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDate *lastYear = [calendar dateByAddingComponents:days toDate:now options:0];
[NSUserDefaults standardUserDefaults] setObject:lastYear forKey:@"lastUpdate";
[NSUserDefaults standardUserDefaults] synchronize];
然后我运行背景PFQuery ......
lastDate = [NSUserDefaults standardUserDefaults] objectForKey:@"lastUpdate";
PFQuery *query = [PFQuery queryWithClassName:@"Departments"];
[query whereKey:@"createdAt" greaterThan:lastDate];
此查询有效。返回相应的部门后,我将更新的(当前日期)放在NSUserDefaults中。
[NSUserDefaults standardUserDefaults] setObject:[NSDate date] forKey:@"lastUpdate"];
[NSUserDefaults standardUserDefaults] synchronize];
当我再次运行此查询(见下文)时,如果没有对后端的“Departments”表进行任何更新,我应该收到NO Departments(设备更新日期现在更大)。
但是,当我针对新日期运行时,我得到了相同的结果集...
lastDate = [NSUserDefaults standardUserDefaults] objectForKey:@"lastUpdate";
PFQuery *query = [PFQuery queryWithClassName:@"Departments"];
[query whereKey:@"createdAt" greaterThan:lastDate];
注意:我已记录所有日期,并且NSUserDefaults中的日期是正确的。我还检查了后端的日期,一切看起来都正确。我还在每次运行之前清除了PFQuery缓存,并将缓存策略设置为仅网络,只是为了消除缓存怪异。
真正奇怪的是,如果我杀了应用程序并再次运行它,那么查询将按预期工作(无结果)......
lastDate = [NSUserDefaults standardUserDefaults] objectForKey:@"lastUpdate";
PFQuery *query = [PFQuery queryWithClassName:@"Departments"];
[query whereKey:@"createdAt" greaterThan:lastDate];
在玩了几天之后,我能得出的唯一结论是这是PFQuery中的一个错误。我正在更改该值,但查询并未遵守此更新值以进行检查,除非我终止该应用并再次运行它。
提前感谢任何建议。