【问题标题】:Parse- [query findObjectsInBackgroundWithBlock:^.)]; Block Doesn't execute w/ Action ExtensionParse- [查询 findObjectsInBackgroundWithBlock:^.)];块不使用操作扩展执行
【发布时间】:2015-11-20 07:14:05
【问题描述】:

我正在尝试为 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];
        }
    }];**
}

【问题讨论】:

  • 你的问题是什么?我猜您无法通过执行查询从解析中获取全部数据。
  • [查询 findObjectsInBackgroundWithBlock:^ 中的 Bock 不执行

标签: ios objective-c cocoa parse-platform ios-app-extension


【解决方案1】:

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

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

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

您将不得不一次又一次地查询,直到达到总数。

例如 - 如果要获取 3000 个对象,则必须查询 3 次,计数为 1000。

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

希望这可以锻炼。

【讨论】:

    【解决方案2】:

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

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

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

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

    谢谢大家的帮助!

    【讨论】:

      猜你喜欢
      • 2017-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-08
      • 1970-01-01
      相关资源
      最近更新 更多