Я пытаюсь получить список PFObjects PFUser для отображения в виджете iOS 8 Today.
После этого сообщения в блоге by Parse, я включил одни и те же группы приложений и общий доступ к связке ключей как в своем основном приложении, так и в расширении в Xcode.
Я также включил следующее в AppDelegate моего основного приложения и viewDidLoad моего расширения Today:
[Parse enableLocalDatastore];
[Parse enableDataSharingWithApplicationGroupIdentifier:@"group.com.me.myapp" containingApplication:@"com.me.myapp"];
[Parse setApplicationId:@"myAppId" clientKey:@"myClientId"];
В widgetPerformUpdateWithCompletionHandler я построил и выполнил свой запрос:
- (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'' при вызове enableDataSharingWithApplicationGroupIdentifier в viewDidLoad.
Я могу воспроизвести эту перезагрузку, проведя Центр уведомлений на вкладку «Уведомления» и проведя его обратно, что приведет к повторному вызову viewDidLoad.
Я перепроверил правильность порядка вызова методов и даже повозился с порядком, но все еще получаю сбой.
Любые идеи? Заранее спасибо!