我有以下代码可以从我的 Parse 表中检索所有新的“部门”...
在设备上运行第一个应用程序时,我为去年创建了一个日期。
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];
当我再次运行此查询(见下文)时,如果没有对后端的“部门”表进行任何更新,我应该不会收到任何部门(设备更新日期现在更大)。
但是,当我针对新日期运行时,再次返回相同的结果集......
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 中的一个错误。我正在更改该值,但查询并未遵循它要检查的更新后的值,除非我终止该应用程序并再次运行它。
在此先感谢您的任何建议。