Не удалось получить доступ к активам приложения WatchKit

Мне нужно использовать некоторые изображения в моем приложении WatchOS и его осложнениях. Если я помещу их в каталог активов внутри целевой группы приложения watchkit, я не смогу получить к ним доступ из моего приложения WatchOS, но в каталоге расширенных активов я смогу.

Это тестовое изображение: CircularSmallRingImage42mm@2x.png

Вот как я проверил доступность:

  • Я поместил файл png в активы приложения watchkit. XCode создал рекламный набор изображений, поместив изображение в слот 2x.
  • Я скопировал имя CircularSmallRingImage42mm из Attribute Inspector.
  • Я добавил следующий код в метод awakeWithContext() в моем начальном InterfaceController:

    if let image = UIImage(named: "CircularSmallRingImage42mm") {
        NSLog("works")
    } else {
        NSLog("doesn't work")
    }
    
  • Я сбросил содержимое и настройки в симуляторе Apple Watch.

  • Я очистил и запустил схему приложения watchkit на симуляторе iPhone 6s Plus + Apple Watch 42 мм. Не работает.
  • Я удалил набор изображений и повторил процедуру, за исключением того, что на этот раз я удалил изображение в каталоге активов расширения приложения. Работает.

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

Почему я не могу получить доступ к изображению? Я делаю что-то неправильно? Разве набор приложений watchkit не рекомендуется для хранения статических файлов?


person Julsteri    schedule 30.06.2016    source источник


Ответы (2)


Судя по названию изображения, похоже, что оно связано с осложнением.

Изображения усложнений принадлежат каталогу ресурсов расширений WatchKit, поскольку усложнение является «расширением» вашего приложения. Ваше приложение не обязательно должно быть загружено или запущено, чтобы усложнение функционировало.

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

UIImage(named: "Complication/Circular")

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

person Community    schedule 30.06.2016
comment
Да, я пытаюсь построить усложнение, но в целях тестирования я просто закинул изображение в активы, создав таким образом набор изображений. Я вызываю методы из пользовательских контроллеров, поэтому сценарий тестирования не должен иметь ничего общего с осложнениями. Я также избегаю сложных активов из-за несоответствий с требованиями к размерам, упомянутыми в этой теме. Я следовал инструкциям этого парня: ссылка, требуя изображения переносятся на часы во время установки. Он ошибается? - person Julsteri; 30.06.2016
comment
Эта запись в блоге была написана еще в watchOS 1, когда расширение для часов работало на iPhone. Передачи изображений больше нет, так как и приложение, и активы расширения уже находятся на часах. Как вы уже обнаружили при тестировании, изображения принадлежат каталогу ресурсов расширения. - person ; 30.06.2016
comment
Теперь я понимаю, что мне нужно использовать активы расширения, но я до сих пор не понимаю, почему активы приложения wachkit недоступны. - person Julsteri; 30.06.2016
comment
Думайте об ресурсах приложения как о статических ресурсах, используемых системой во время загрузки (например, ресурсы раскадровки, значки приложений), а ресурсы расширения — как о динамических ресурсах, используемых во время выполнения, когда ваш код напрямую обращается к ним. - person ; 02.07.2016

Активы для приложения iphone и приложения для часов совершенно разные, вы не можете получить доступ к изображениям в папке ресурсов приложения, чтобы просмотреть расширение. Вы должны добавить новые изображения, совместимые с комплектом часов.

person Mayur Rathod    schedule 02.07.2017