Обмен данными между общим расширением iOS 8 и основным приложением
Недавно я делал простое расширение для iOS 8, чтобы понять, как работает система. Как утверждает Apple в своемРуководство по программированию расширений приложений:
По умолчанию содержащее приложение и его расширения не имеют прямого доступа к контейнерам друг друга.
Это означает, что расширение и содержащее приложение не обмениваются данными. Но на той же странице Apple предлагает решение:
Если вы хотите, чтобы ваше содержащее приложение и его расширения могли обмениваться данными, используйте Xcode или портал разработчика, чтобы включить группы приложений для приложения и его расширений. Затем зарегистрируйте группу приложений на портале и укажите группу приложений для использования в содержащем приложении.
Тогда становится возможным использовать NSUserDefaults для обмена данными между содержащим приложение и расширением. Это именно то, что я хотел бы сделать. Но по какой-то причине это не работает.
На той же странице Apple предлагает стандартные значения по умолчанию:
var defaults = NSUserDefaults.standardUserDefaults()
В презентации WWDC (217) они предлагают общий пакет:
var defaults = NSUserDefaults(suiteName: kDefaultsPackage)
Кроме того, я включил группы приложений как для цели приложения, так и для цели расширения, с тем же именем группы приложений:
Но все эти настройки даром. Я не могу получить данные, которые я сохранил в приложении, из расширения. Как будто две цели используют совершенно разные хранилища NSUserDefaults.
Так,
Есть ли решение для этого метода?Как я могу поделиться простыми данными между приложением и расширением общего доступа? Данные - это просто учетные данные пользователя для API.