Итак, я осмотрелся, потому что у меня была точная проблема. Что я сделал, что сработало, так это добавил основное приложение и расширение в группу, перейдите в основной проект-> Цель-> Возможности и создайте группу (если у вас ее нет или все равно создайте ее) следующим образом:
![введите здесь описание изображения](https://i.stack.imgur.com/WdFi6.png)
Затем перейдите к расширению под целью (E), снова в «Возможности» и добавьте расширение в группу (точно такую же группу приложений, как и для основной цели), например:
![введите здесь описание изображения](https://i.stack.imgur.com/XknIq.png)
Затем, как только вы сделали и то, и другое, в своем основном приложении, всякий раз, когда вы хотите что-то добавить, создайте новый экземпляр NSUserDefaults, но для Suitename, равного имени группы, которое вы сделали ранее. Так:
NSArray *testing = @[@"first",@"Second",@"Third"];
NSUserDefaults *userd = [[NSUserDefaults alloc]initWithSuiteName:@"The gouprname I made earlier"];//This is exactly the same as the groupname
[userd setObject:testing forKey:@"ExtensionArray"];//set the object you want to share
[userd synchronize]; //It's a good idea to sync, just to be on the safe side.
В ViewController вашего расширения используйте то же имя группы, но для чтения пользовательских значений по умолчанию:
NSUserDefaults *sharedD=[[NSUserDefaults alloc]initWithSuiteName:@"Exactly the same groupname that I gave both in the Capabilities and when initialising the userdefault"];
self.testing = [[NSArray alloc]initWithArray:[sharedD arrayForKey:@"ExtensionArray"]];
И вуаля! массив есть! Я где-то читал, что вы даже можете добавить функцию уведомления об изменении объекта, используя класс Wormhole, но я не могу найти ссылку на него. Я уверен, что если вы погуглите класс Wormhole, вы наткнетесь на него.
Я надеюсь, что смог помочь, и если вы нашли дополнительную информацию, пожалуйста, поделитесь ею со мной.
person
Septronic
schedule
17.10.2015