2015-04-30 2 views
1

У меня есть приложение iOS (приложение с одним представлением), которое я создал еще в 2012 году. Теперь я хочу добавить цель «Сегодняшнее расширение» в решение. Я добавил Todays Extension в качестве отдельной цели. Проблема, с которой я сталкиваюсь, заключается в том, что я не могу использовать ни один из файлов, которые я добавил в своем первоначальном проекте.Несколько целей Обмен файлами

Даже если я импортирую заголовки, я по-прежнему не могу создавать классы, принадлежащие моему оригинальному проекту. Как я могу делиться классами между двумя целями.

ГЛАВНЫЙ ВОПРОС:

Основная проблема заключается в том, что я создаю базу данных SQLITE в цели по умолчанию. База данных хранится в папке «Документы» основного приложения. Проблема в том, что расширение Todays не может получить доступ к этому каталогу, и даже если я сохраню путь в NSUserDefaults, он все равно не сможет получить к нему доступ.

+0

Есть ли ошибки, связанные с импортированием заголовков? Какое конкретное сообщение об ошибке/проблема мешает вам создавать экземпляры классов из вашего исходного проекта? –

ответ

0

Вам необходимо проверить в своем инспекторе файл, чтобы поделиться им с вашим целевым назначением на сегодняшний день.

enter image description here
Выберите файл .m, а в правой седловине (инспектор), вы можете проверить «Target Membership» файла. Просто добавьте его в расширение.
(На картинке выше погода Live - Suisse - это сегодня расширение и другие целевые приложения).

+0

Спасибо! Я попробую. Я изменил целевое членство одного класса на то, чтобы иметь текущее расширение, но он вызывает несколько других классов, поэтому похоже, что мне нужно добавить много классов вручную в цель Todays Extension. –

+0

Да, иногда это довольно неприятно, но я не знаю другого способа добавить файлы к вам. –

+0

Другая проблема заключается в том, что база данных хранится в папке «Документы» одного целевого объекта, к которой нельзя получить доступ с целевой цели «Сегодняшний». –

-1
  • Вам необходимо создать встроенную инфраструктуру для совместного использования кода между расширением вашего приложения и его содержащим приложение.

  • Чтобы включить обмен данными, используйте Xcode или портал разработчика, чтобы включить группы приложений для содержащего приложения и его поддерживаемых расширений приложений.

Вот яблоко Документация Ссылки

Adding App group

Handling Common Scenarios in App & extentions

что discribes все, что вам нужно.

+0

Встраиваемый фреймворк не требуется, и он не говорит о совместном использовании данных, кроме обмена кодами. –

+0

@ David'mArm'Ansermot Чтобы поделиться этим кодом, вам нужно использовать встроенную инфраструктуру, вот что я сказал –

0

По ссылкам Зубайр в ниже:

  • Создать группу приложений (например group.com.yourcompany.app) и назначить его как приложение и виджет
  • При открытии документа, чтобы получить NSURL для этого нужно использовать, например:

    NSURL *storeURL ; 
    
    storeURL= [[[NSFileManager defaultManager] 
          containerURLForSecurityApplicationGroupIdentifier:@"group.com.yourcompany.app"] 
          URLByAppendingPathComponent:@"yourdatabase.sqlite"]; 
    

это не строго необходимо использовать общие рамки, но избежать дублирование кода.

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

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