Обмен данными между приложением и его расширением происходит через общую AppGroup. Я могу использовать общий контейнер группы приложений в качестве постоянного хранилища данных/файлов. Как я могу создать/использовать общий контейнер группы приложений в качестве хранилища кеша между содержащим приложением и его расширением? Это вообще возможно?
Как создать/использовать общий контейнер группы приложений в качестве хранилища кеша между содержащим приложением и его расширением в ios
Ответы (1)
Да, вы на правильном пути. Это возможно.
На вкладке Capabilities
цели основного приложения и цели расширения WatchKit добавьте группу приложений, например, с именем group.myWatchDefaults
.
Затем вы можете получить доступ к значениям по умолчанию следующим образом:
NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.myWatchDefaults"];
Чтобы добавить данные:
[defaults setObject:[NSNumber numberWithBool:true] forKey:@"myBoolVariable"];
Чтобы получить данные:
bool watchAppOpenedBefore = [[defaults objectForKey:@"myBoolVariable"] boolValue];
Убедитесь, что вы используете synchronize
после изменения значений по умолчанию:
[defaults synchronize];
Иногда синхронизация NSUserDefaults между приложением Watch и его родительским приложением с помощью групп приложений не работает при использовании симуляторов Xcode. Однако он работает на реальных устройствах (iPhone и Apple Watch). Следовательно, это похоже на ошибку симулятора.
person
vomako
schedule
10.05.2015
спасибо за быстрый ответ.. но я имел в виду, что я использую containerURLForSecurityApplicationGroupIdentifier: чтобы получить URL-адрес из общего контейнера, этот путь URL-адреса аналогичен полученному из метода NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject], верно?. если это так, то как я могу получить доступ к NSCacheDirectory (кэш-хранилищу) с помощью общего контейнера?
- person Kalai_Human; 10.05.2015
В общем контейнере нет именованных каталогов (как в стандартных каталогах). Таким образом, вы должны создавать свои собственные подкаталоги по мере необходимости.
- person Mike Swanson; 10.05.2015