我有一个严重的错误,只有在首次安装/启动我的应用程序时才会发生。
情况是这样的:我在PFInstallation对象上有一对多关系,我使用与此关系相关联的查询来获取所有“用户”对象。 这就像第二次推出My App时的魅力一样。
在第一次启动时我有这个错误,我无法弄清楚如何调试它。
这是我的查询代码: 编辑:我已经更新了这篇文章,所以你可以看到完整的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本地保存错误,但是我在应用程序的第一次启动和其他启动时得到相同的PF安装日志.PFInstallation似乎正确保存。
也许是线程问题?
之前有人遇到类似的错误吗?