2015-06-15 4 views
4

Я пытаюсь получить список PFObjects PFUser для отображения в виджете iOS 8 Today.Исключение при извлечении пользовательских данных parse.com в iOS 8 Today Extension

После этого blog post с помощью Parse я включил те же группы приложений и совместное использование ключей в главном приложении и расширении в Xcode.

Я также включен следующий в AppDelegate моего основного приложения и viewDidLoad моей Extension Сегодня:

[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 снова.

Я дважды проверял, что порядок вызова методов прав, и даже возился с заказом, но я все еще получаю сбой.

Любые идеи? Заранее спасибо!

ответ

1

Попробуйте

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

Убедившись Анализировать инициализирует только один раз в расширение уменьшает аварии. Однако состояние [PFUser currentUser] теперь остается неизменным при входе в основное приложение или выходе из него. –

+0

Не могли бы вы предоставить свой код, где вы используете PFUser? – Sandr

+0

Я получаю доступ к [PFUser currentUser] сразу после шагов инициализации выше, в viewDidLoad моего расширения. –

 Смежные вопросы

  • Нет связанных вопросов^_^