在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"]; }