在iOS 8 Today Extension中获取parse.com用户数据时出现exception

我正在尝试获取PFUser的PFObjects列表,以显示在iOS 8 Today窗口小部件中。

在Parse的这篇博客文章之后,我已经在Xcode的主应用程序和扩展中启用了相同的App Groups和Keychain Sharing。

我也启用了我的主要应用程序的AppDelegate和我今天的扩展viewDidLoad以下:

 [Parse enableLocalDatastore]; [Parse enableDataSharingWithApplicationGroupIdentifier:@"group.com.me.myapp" containingApplication:@"com.me.myapp"]; [Parse setApplicationId:@"myAppId" clientKey:@"myClientId"]; 

widgetPerformUpdateWithCompletionHandler ,我构build并执行了我的查询:

 - (void) widgetPerformUpdateWithCompletionHandler:(void (^)(NCUpdateResult))completionHandler { PFQuery *query = [PFQuery queryWithClassName:@"Note"]; [query whereKey:@"User" equalTo:[PFUser currentUser]]; [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { if (!error) { // check for difference between current and new data if([self hasNewData:objects]) { // fresh data notes = objects; [self.tableView reloadData]; [self updatePreferredContentSize]; completionHandler(NCUpdateResultNewData); } else { // Data is the same completionHandler(NCUpdateResultNoData); } } else { // Failed completionHandler(NCUpdateResultFailed); } }]; } } 

第一次加载似乎工作正常 – 我能够得到我的PFObjects列表。 但是,每当扩展第二次重新加载时, enableDataSharingWithApplicationGroupIdentifier:containingApplication:' must be called before 'setApplicationId:clientKey''viewDidLoad中的enableDataSharingWithApplicationGroupIdentifier调用中引发enableDataSharingWithApplicationGroupIdentifier:containingApplication:' must be called before 'setApplicationId:clientKey''以下exception: enableDataSharingWithApplicationGroupIdentifier:containingApplication:' must be called before 'setApplicationId:clientKey''

我可以通过将通知中心刷到“通知”选项卡并将其刷回,这将重新调用此重新加载,这将导致viewDidLoad被再次调用。

我仔细检查过,调用这些方法的顺序是正确的,甚至可以修改顺序,但仍然崩溃。

有任何想法吗? 提前致谢!

尝试这个

 if(![Parse isLocalDatastoreEnabled]) { [Parse enableLocalDatastore]; [Parse enableDataSharingWithApplicationGroupIdentifier:@"group.com.me.myapp" containingApplication:@"com.me.myapp"]; [Parse setApplicationId:@"myAppId" clientKey:@"myClientId"]; }