我有一个严重的错误,仅在我的应用程序第一次安装/启动时发生。
情况是这样的:我在我的 PFInstallation 对象上有一个一对多的关系,我使用与这个关系关联的查询来获取所有“用户的”对象。这就像我的应用程序第二次发布的魅力。
在第一次启动期间,我遇到了这个错误,我无法弄清楚如何调试它。
这是我的查询代码: 编辑:我已经更新了这篇文章,因此您可以看到完整的 PFInstallation + PFRelation + PFQuery 异步流程。
// Store the deviceToken in the current installation and save it to Parse.
PFInstallation *currentInstallation = [PFInstallation currentInstallation];
[currentInstallation setDeviceTokenFromData:devToken];
[currentInstallation setValue:deviceName forKey:@"deviceName"];
[currentInstallation setValue:deviceModel forKey:@"deviceModel"];
NSTimeZone *timeZone = [NSTimeZone localTimeZone];
NSString *tzName = timeZone.name;
NSNumber *secondsFromGMT = [NSNumber numberWithInteger:timeZone.secondsFromGMT];
[currentInstallation setValue:tzName forKey:@"timeZoneName"];
[currentInstallation setValue:secondsFromGMT forKey:@"secondsFromGMT"];
[currentInstallation saveInBackgroundWithBlock:^(BOOL succeed, NSError *error){
NSLog(@"Save installation: %s - error %@",succeed? "YES":"NO",error);
if (succeed && !error) {
if ([PFInstallation currentInstallation].objectId != nil){
PFQuery *query = [PFQuery queryWithClassName:@"Event"];
PFRelation *myEvents = [[PFInstallation currentInstallation]relationForKey:@"events"];
NSLog(@"Pf installation: %@ \nRelation: %@",[PFInstallation currentInstallation],myEvents.query);
query = myEvents.query;
query.cachePolicy = kPFCachePolicyCacheThenNetwork;
[query includeKey:@"Obs"];
[query includeKey:@"Category"];
[query orderByDescending:@"DateIni"];
[query setLimit:100];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
如您所见,我已经检查了PFInstallation是否已保存...
调试器卡在一行:
0x1000b0e14: adrp x8, #1904640
并且在线程一上卡在进程 [PFQuery markAsRunning]
如果我继续运行我的应用程序,它不会崩溃,如果我重做查询,我将永远得到相同的错误并且它不会停止。
我杀死了应用程序并重新启动......一切都像魅力一样。
我知道这类似于 PFInstallation 本地保存错误,但是我在第一次启动应用程序和其他应用程序时获得了相同的 PFinstallation 日志。PFInstallation 似乎已正确保存。
也许线程问题?
以前有人遇到过类似的错误吗?