解析- [查询 findObjectsInBackgroundWithBlock:^.)];块不执行 w/ 操作扩展

Parse- [query findObjectsInBackgroundWithBlock:^.)]; Block Doesn't execute w/ Action Extension

我正在尝试为 iOS9.1 开发和操作扩展,它应该查询 Parse 以获取一些数据。

我已经在扩展中添加、启用和测试了 Parse,我成功地创建了测试对象并检查了当前用户。

我无法获取 Parse 查询方法中的代码 [查询findObjectsInBackgroundWithBlock:^执行。 LLDB 一直在跳过它,所以我真的很茫然。

此代码在容器应用程序中完美执行,所以我有点困惑。

- (void)viewDidLoad
{
    [super viewDidLoad];
    [Parse enableLocalDatastore];
    [Parse enableDataSharingWithApplicationGroupIdentifier:@"group.com.app.slinky"
                                     containingApplication:@"com.app.Slinky"];

    [Parse setApplicationId:@"xxxxx"
                  clientKey:@"xxxxx"];

    for (NSExtensionItem *item in self.extensionContext.inputItems) {
        for (NSItemProvider *itemProvider in item.attachments) {
            if ([itemProvider hasItemConformingToTypeIdentifier:(NSString *)kUTTypePropertyList]) {
                [itemProvider loadItemForTypeIdentifier:(NSString *)kUTTypePropertyList options:nil completionHandler:^(NSDictionary *jsDict, NSError *error) {
                    dispatch_async(dispatch_get_main_queue(), ^{
                        NSDictionary *jsPreprocessingResults = jsDict[NSExtensionJavaScriptPreprocessingResultsKey];
                        NSString *pageTitle = jsPreprocessingResults[@"title"];
                        NSString *pageURL = jsPreprocessingResults[@"URL"];
                        if ([pageURL length] > 0) {
                            self.siteURL.text = pageURL;
                            self.URLstring = pageURL;
                        }                            
                        if ([pageTitle length] > 0) {
                            self.siteTitle.text = pageTitle;
                        }   
                    });
                }];
                break;
            }
        }
    }
    [self queryParse];
}


-(void)queryParse{

    PFQuery *query = [self.friendsRelation query];
    [query orderByAscending:@"username"];
    **[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
        if (error) {
            NSLog(@"%@ %@", error, [error userInfo]);
        } else {
            self.friends = objects;
            [self.tableView reloadData];
        }
    }];**
}

从 Parse 获取 Objects 有一些限制。 Read Here

一个人有获得 100 个的限制 objects,但是从 1 到 1000 的任何东西都有一个有效限制。

您必须再次为下一个查询设置限制 objects 并跳过 PFQuery 的属性。

您需要反复查询,直到达到总数。

例如 - 如果您有 3000 objects 需要获取,那么您必须查询 3 次,例如 1000。

dispatch_async(dispatch_get_main_queue(), ^{ }); 块内调用 [self queryParse];

希望这能锻炼身体。

这只是 12 小时折射马拉松的结果:-(

当我将 queryParse 调用移动到它自己的方法中时。我丢失了

的定义
self.friendsRelation = [[PFUser currentUser] objectForKey:@"friendsRelation"];

本质上发送了一个错误的查询...我不知道为什么它不是 return 错误,但无论如何我现在都可以检查它。

谢谢大家的帮助!